我是如何准备“BAT”与“外企”面试的?

你好,我是朱涛。这是「沉思录」的第六篇文章。

入职新公司快半年了,今天,我想和你聊聊,关于找工作、面试的一些心得与体会。说实话,在这次找工作之前,我面试找工作的经历并不丰富,反而是当面试官的次数更多。所以呢,这次换工作,我把国内、国外一二线公司都面了一遍,也算是弥补了自己这方面经验的不足吧。

「国内公司」比如百度、阿里、腾讯、字节,「外企」以 Google、Facebook、Microsoft 为代表,它们都是一流的互联网公司,但它们的面试,不管是从流程上,还是从内容上,差异还是挺大的。

如果你最近也想面试:国内、国外的一些大厂,相信这篇文章可以给你一定的帮助。

我们先聊聊国内公司。

国内公司

国内公司,包含传统互联网企业,还有一些国企、央企。

​附:其他跳板机会:技术大厂【前端-后端-测试】机会上海、南京、东莞、杭州、苏州、深圳、成都、西安等等;待遇还可以,有需要的铁子们可以试试~​

面试流程

从我的面试经验来说,国内公司大致的流程是这样的。

  • HR 沟通:顺带约下一轮的时间;
  • 笔试:对于社招而言,互联网公司笔试比较少,但国企、央企还比较常见。
  • 一轮技术面试:这一轮的面试官,一般都是团队内比较资深的工程师,技术细节的问题偏多,最后,一般还会预留20分钟左右的时间,出一道算法题, 大概是 LeetCode Medium 级别。
  • 二轮技术面试:这一轮的面试官,一般是团队直属 Leader。具体的内容可能因人而异,有些面试官,喜欢在一个问题上持续深挖,试探你的「技术深度」;有些面试官,喜欢跟你聊行业动向,考察你的「知识广度」。当然,大部分情况来说,两者都会考察。
  • 三轮技术面试(终面):这一轮的面试官,一般是 Leader 的 Leader。从我的经验上来看,这一轮主要是考察候选人的「潜力」。那么,如何判断候选人的潜力大不大呢?答案就是:「基础」、「品性」。这一轮面试聊的内容,可能时而比较抽象,时而比较底层。
  • HR 面试:到了这一步,你的技术能力就已经得到认可了。剩下的,就是其他方面能力的考察了。通常来说,只要你没有诚信之类的问题,HR 是不会轻易拒你的。

那么,面试国内的大厂,我做了哪些准备呢?

面试准备

每个技术领域的知识,其实都是模块化的,我把它们分为以下几个部分:

算法数据结构:由于平时工作中用的并不多,所以,有必要在面试之前重新补一补算法和数据结构。

具体,我的做法是这样的:

  • 数据结构:关闭 IDE 的语法提示,用主力语言(我用的 Kotlin)实现一遍常见的数据结构:Array、List、Stack、Queue、Map 等等;
  • 算法:同样的,再把常见的算法自己手写一遍:常见的7种排序算法、3种字符串搜索算法、双指针、多指针、回溯,等等。
  • 刷题:对于国内公司的面试准备,掌握 LeetCode 上 Top 200 的高频题就已经可以轻松应对了。注意,这里我说的是“掌握”,单纯只是刷一遍是不太可能达到这种境界的。我喜欢用不同的思路,不同的编程思想,从不同的角度,去剖析同一道算法题。

除了数据结构与算法之外,还需要注意:计算机基础

是的,你没看错,社招同样需要花时间补一补计算机的基础知识。比如:计算机网络、操作系统、加密算法等等。对于大部分工程师而言,Http、Https、Linux 系统、编解码,都还是需要有一些基本认识的。

最后,也是最重要的:专业知识

比如,我是 Android 工程师,面试之前,我会花很长时间补专业知识,从基础的到高阶的。目前市面上对高级 Android 工程师的要求其实不低。

  • 基础知识:最基本的,四大组件、生命周期、启动模式、事件分发、自定义View,这些都要烂熟于心。
  • 性能优化:Android 性能优化,这个方向的水其实很深。但对于普通的 Android 工程师而言,掌握一些基础的排查工具,以及基本的性能优化套路,还是很有必要的。如果是大厂专门做性能优化方向的工程师,往往需要深入 Dalvik、ART 虚拟机去做优化。
  • Framework:这部分,也许很多人会把它当作八股文来看待,比如: App 启动流程、Binder 机制,等等。我自己在准备的过程中,并不会强迫自己记住 Framework 层的具体细节,更多的,是去理解它背后的设计思想。工作中遇到问题的时候,去网上查源码,具体情况具体分析即可。
  • 工程架构:在准备这个部分的时候,我主要是去读了一下主流的开源项目,并尝试自己手写实现出它们的 Kotlin 版本。在这个过程中,我不仅对项目本身有了更深的理解,对 Java 和 Kotlin 也有了更深的认识。
  • 新技术:每个技术领域,一定是持续发展的。比如说,Android 领域,就有:Kotlin、协程、KMM、Compose 等等。不过,有趣的是,几乎没有面试官问我这方面的知识,我猜他们都很相信我吧。

聊完国内公司了,我们再聊聊国外公司吧。

外企

由于我肉身在国内,所以聊的外企大致分两种:Base 中国地区、Base 亚洲地区。Base 欧美地区的职位我都没有去聊,一方面我没有打算跑这么远,另一方面欧美的职位一般也不会考虑亚洲地区的候选人,签证之类的问题还是比较麻烦的。

面试流程

外企的面试流程和国内并不同,一般来说会是这样的。

  • Recruiter 电话沟通(英语):这一轮,业内一般叫做Intro Call。外企的简历筛选标准还是比较高的,能接到 Recruiter 的沟通面试,就已经说明候选人有很不错的背景了。这个阶段,Recruiter 主要介绍岗位的信息。当然,Recruiter 也会考察候选人的英语「听」、「说」能力,还有计算机基础知识。对,你没看错,Recruiter 也会问一些计算机相关问题,如果你的回答不能令 TA 满意,可能就没有后续了。(额外说明:外企面试流程当中,Recruiter 会充当国内 HR 的角色,这一点外企分工会更明确一些,不同的阶段,也会有不同的 Recruiter 对接。)
  • 一轮技术面(英语):这一轮,业内一般叫做Phone Interview,也叫「电面」,是远程的。面试官一般会是和你有相同技术栈的工程师,考察内容基本上就是:半小时数据结构算法、半小时技术,难度不会太大。这轮面试的作用其实就相当于一轮初筛。
  • N轮技术面试(英语):从这一轮开始,业内一般叫做Onsite Interviews。在疫情出现之前,一般都会要求候选人到公司现场面试,用白板和马克笔进行面试,而且是:从早上面试到下午,车轮战。这样的面试一般有3~5轮,根据每个候选人的情况而定。面试内容,不仅涉及数据结构算法,还会有系统设计内容(System Design)、领导力(LeaderShip)等等。近几年,由于疫情原因 Onsite 也是线上视频面试了。经过前面的4~6轮面试以后,Recruiter 会收集面试官对你面试评价,提交给「技术委员会」(Hiring Committee)来统一评判。
  • Team Match:一般来说,到这个阶段就说明你已经通过「技术委员会」评审了。这时候就需要去匹配公司内部有 Head Count 的团队了。外企的工程师文化是相对开放的,比如:我是 Android 工程师,通过面试以后,我也是可以去做前端、后端的——只要我愿意,以及有人愿意要我。这一轮的面试官,一般是有空缺 Head Count 的团队 Leader,对方会介绍团队的状况,如果你加入会负责什么事情,这是个「双向选择」的过程。

其实,不同外企的面试流程还是会有一些差异的。比如说,我经历的外企面试当中,最多的有 8 轮,这不仅考验技术,更考验体能。

那么,我是如何准备外企面试的呢?

面试准备

外企的面试准备,跟国内公司的其实差不太多,但是侧重点不同,主要体现在下面两个方面。

  • 数据结构算法:外企面试的准备,需要掌握更多高阶的数据结构与算法:字符串搜索算法、图论算法、动态规划;并查集、单调队列、线段树、跳表,越多越好。
  • 系统设计:前端与后端的系统设计,会有较大的差别。比如:前端(客户端)的系统设计,可能会是设计一个 Twitter App;后端的系统设计则可能是整个 Twitter 的服务设计,负载均衡用什么、什么情况需要一致性哈希,数据库怎么设计、Feed 流用什么数据结构、消息推送用什么设计模式。由于我是 Android 工程师,因此我在准备的过程中,整体偏向前端的设计,去尝试设计了市面上主流的 App:微信、Twitter、TikTok等等。

结尾

这次面试准备,前前后后我花费了将近4个月,也总结、收集了一些文档资料,主要涵盖以下几个方面:

  • 英语口语资料;
  • 数据结构算法学习资料;
  • System Design 学习资料,国内基本没有客户端相关的系统设计资料,我主要收集的都是国外的文章与书籍;
  • 最后,就是 Android 进阶相关话题的博客、开源项目。比如:性能优化、插件化、Framework、Kotlin、协程、Compose等等;

如果你最近打算找工作,欢迎关注我。另外,我这里也有各个大厂的内推通道,我帮你内推的话,你的简历通过率也会更高一些。

转载:朱涛的自习室【公众号「朱涛的自习室」】

全部评论

相关推荐

头像
07-21 17:34
湖南大学 安卓
有一次朋友看完演唱会回来,激动之余那几天一直在给我安利各种歌手,评价各种歌手,推荐薛之谦,周杰伦。他说你刚开始可能会很喜欢薛之谦,但等你真正成熟之后才会明白周杰伦才是华语乐坛的神。那几天总是在给我推荐,分析,我实在是不感兴趣,说实话,我其实对周杰伦并不感冒,并不否认周杰伦有几首歌陪伴我长大,《稻香》《夜曲》……但是我也只听这几首,其他的歌曲实在是不喜欢,感觉他大部分的歌都很淡,像大白话诉说一样,没有高潮,整个基调很平稳,有的时候不看歌词都不知道他在唱什么,让人唱不起来。他觉得周杰伦作词作曲唱功都很厉害,我觉得他是为情怀买单,个人并不认同,我希望他尊重我的想法,但是他更急了,非得一顿解释,文字说不清还给我打电话,就是一定要让我感受到周杰伦的魅力,喜欢上周杰伦。他说周杰伦的歌听百遍都不会觉得腻,越听越有味道,越听越觉得歌词优美,唱功高绝,但是目前的我确实get不到周杰伦的点,他说周杰伦封神那几年,各大影视会员都是他的歌,常年霸占热搜榜第一,专辑都卖火了,他的歌火遍大江南北,陪伴了很多人的青春,尤其是现在开一场演唱会,一票难求,更是带动一个城市的GDP。最后他说你越听越喜欢,越长大,年龄越大越喜欢周杰伦。我说:萝卜白菜各有所爱,尊重不同理解不同!
牛友故事会
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务