对于学技术的IT工程师来说,加入百度、谷歌等顶级互联网公司,是一个梦想。但是有些技术人员虽然接到了百度、谷歌等HR的面试通知,却死在面试问题上。W3Cschool精选几个谷歌技术职位几个古怪的面试问题,看看你知道答案吗?
戈蒂埃是一个工程师,早前,他在Gwan.com上发文称,最近,他收到谷歌的面试通知,首轮面试是通过电话完成,就是这次面试,他竟然惨败。刚开始面试的时候,两人聊得很投机,面试很顺利。但是随着时间的延长,面试官提问的几个问题,戈蒂埃都答错了。
戈蒂埃在博客文章中写道:“由于我获得了面试的资格但未能通过测试,因此我把面试时遇到的问题和面试官认可的正确答案列出来,如果你们哪天接到谷歌的面试通知,这些问题和答案或许能为你们提供一点帮助。”
戈蒂埃答错的第一个问题是面试官所提的第五个问题,问题是:“Linux索引节点是什么?”
戈蒂埃的回答是:“任何特定文件系统独有的文件标识。”
但是面试官的回答是:“错,正确答案是文件元数据。”
戈蒂埃并不认同这个所谓的正确答案,他说:“索引节点是特定文件系统中用于识别文件的索引,你可以通过查找这个索引来抓取文件属性比如大小、创建时间、所有者和权限等,你甚至可以在某些文件系统上添加你自己的属性。”
但是面试官再次无情地驳斥了他的话,面试官说:“又错,不是属性,而是元数据。”
戈蒂埃随后又回答了5个技术性很强的问题,结果他都回答错了,因此失去了加盟谷歌的机会。这些问题看起来很难,包含很多技术术语,除了计算机科学专业人士,一般人完全不熟悉它们。
后来他实在忍不住了,反问面试官:“这项测试有什么意义?”
戈蒂埃在博客文章中还谈到了他对面试官提出的每一个问题的想法。他在文章最后自嘲道:“满分10分,我只得了4分,不过总比我在谷歌页面排名中取得的最佳名次要好一些。”
6道Google面试题,你会做吗?
1.在Java里面,finally、final和finalize的区别是什么?
挑战:看看你知不知道这些术语。比方说,finalize处理的是“垃圾回收”,而finally则是指向一个特定的错误。
2. 从一大块文本中去掉重复的行
挑战:一个基本问题,看你是不是能估算出问题是否可以在有限的时间内解决。
这样的问题通常可以采取暴力攻击手段,但也有可能永远都无法解决。
3. 给你一个字符串,找出包含给定字符集的最小窗口
挑战:此类问题有许多解决方式,完全取决于你选择的算法是什么。
Google要找的是能选出最快算法的工程师。
4.如果有一个含有n个节点的列表,对于一个有向无环图来说,最多可以有几条边?
挑战:这是著名的旅行商问题(traveling salesman problem)的一个派生。
这是一个不要求你找出聪明的数学算法而是要你拓展思路的数学问题。你必须在节点间画线,条件只有一个:无论你从哪里开始,永远不要回到原点。
5.写一段程序计算出某字符串是否另一字符串的轮换(rotation)
挑战:这个问题靠的是看你是不是能够灵活掌握一些计算机方面知识的转义。
比方说,“strings”一语通常是指由字符、单词或可打印、可见的东西组成的多行字符串。不过同时也可以是矩阵(二维对象)及别的对象。
你必须检查看看它是不是可以轮换(rotate),然后跟另一个进行对比。
6.粘滞位是什么?为什么要用?
挑战:粘滞位是一个系统管理术语,指在Unix系统中设置文件或者目录访问权限的标志位,如果设置,只有owner或者root权限用户能够重命名、删除文件。
Google想测试一下,看看你是否了解一些管理的细节,而不是只会编程。
其实对于很多IT工程师来说,上面的问题不难回答。之所以一下子答不出来,是因为天天写代码,没有去巩固学到的东西。所以即使工作很繁忙,也需要去W3cschool、菜鸟教程这样的平台多充充电。
网友评论