因为这份面试指南相对比较通用,因此小编直接把题目从Google面试指南改为大厂面试指南了。下面就直接来说重点吧。
了解你投递的岗位
首先最重要的就是了解你要投递、面试的岗位具体的工作内容和职责,一般还需要了解对应hc的职级。一般而言,公司招聘都是一个萝卜一个坑,萝卜太大或太小都不一定合适。比如有的公司,预期是招聘P7级别的,但你刚毕业两三年,可能希望就不大。本来只想招聘P6,结果来了一个P8的候选人肯定不合适,所以有时候面试没通过并不是候选人不够优秀,也有可能是候选人过于优秀。
这里分享一个国内部分互联网公司职级薪酬对比图,大家可以参考一下。
互联网大厂薪资对应关系,图来源:曾加
知乎下面阐述下原文中的Google的SWE岗位。
SWE其实就是SoftwareEngineer的缩写,就是一般的码农岗位啦。Google的SWE岗位根据不同的项目,可能需要参与到项目的各个流程中,比如:调研(研究),设计架构,做计划,开发测试以及发布等各个周期。
涉及到具体的产品可能需要处理大规模的数据,需要提供详细的解决方案,将具体的方案落地时可能会涉及到技术的方方面面。有点“全栈工程师”的味道。
Google是一家技术驱动型公司,招聘各种技术人才来处理各种技术难题,影响的用户都是数千万上亿级别的。设计到的具体产品包括:AdWords,Chrome浏览器,Android,YoutubeGoogle云和Google地图等等,Google的工程师正在通过各种各样的技术来改变世界。
面试Tips
在面试过程中,期望了解到候选人的思考过程,不仅仅是考察技术能力,同时也会考察候选人到底是怎么来解决具体问题的。候选人需要和面试官来回沟通确认来明确和佐证自己的观点。
在面试过程中可能会遇到一些开放式的问题。这个时候也不用紧张,可以和面试官来沟通明确具体问题的边界,一步一步来解决。
当回答一个问题的时候,候选人需要多尝试思考一些优化的方案。很多情况下,可能最开始的解法不一定是最优的。如果可能的话,在最开始回答问题的时候,可以直接先给面试官一个暴力的解法,这样方便在很短的时间之内明确你是否真的了解清楚了题意。
面试过程中,并不一定真的会在IDE上编译和跑通代码。但最好刻意提前在白板或者纸上联系写代码。注意要想清楚一些边界的条件,不要遗留一些明显的bug。但不用纠结一些具体的很小语法错误,只要让面试官明确意思即可,比如不用纠结substring的参数到底是(startIndex,length)还是(startIndex,endIndex)。
电话面试
电话面试一般会涉及到数据结构和算法,大概也就是20~30行代码,你可以用你自己最熟悉的编程语言。注意代码有良好的可读性,并且足够鲁棒。
你可能会被问一个很开放的问题,需要你跟面试官沟通明确问题的边界,具体的需求;问题明确后,你需要向面试官解释你的算法思路;然后需要有能力将上面的算法思路转成代码。因为时间有限,不会要求你给一个完美的解法的。可以先写出一个解法来,然后再逐步优化。注意一些边界的case。确实在真实的面试场景中这一步就会卡掉很多人。逐步优化你的代码,自己主动写测试用例来测试解决其中的bug。一定要自己主动多思考、自测,而不要等到面试官来提示你或者指出你的bug。在面试当中,你主动思考写测试用例会有加分的。编码(算法)面试
Coding:至少用一门你熟悉的编程语言(不限,推荐C++,Java,Python,Go或者C)实现给定的题目。从代码中会考察一些基本的API、面向对象的设计,编码和测试,包括各种边界条件的处理。注意会重点