▶聊了一些项目,询问了职业规划
由于第二位面试官不在,而面试我的那个人去开会了,所以这一轮面试并没有问太多相关的知识。不过第二位面试官全程面带微笑,所以这一轮面试很轻松,更像是一起讨论一个问题。
面试完已经是下午四点半了,因为面试是周五,美团周五会议比较多,所以等了一会儿,第二个面试官说第三个面试官在开会,改天再面试。我决定一口气面试完,一共等了两个半小时,期间HR跟我说第三个面试官人很好。
三面
▶他指出了我认为你做得好的几个地方,然后根据我所说的又问了一些更深入的问题。
▶如何管理资源。
▶Java的几个重要特性
▶网络五层结构以及各层的协议。由于我的网络不太好,还问了一些其他的问题(比如MAC地址和IP地址的区别等)。
▶你为什么离开上一家公司?你的职业规划是什么?
然后因为面试结束是晚上8点,他们就让我回家了,让HR下周再联系我,我觉得这样就通过了面试。
美团的技术还是很强的,从面试官的水平就可以看出来,特别是核心的外卖部门。办公环境不错,但是感觉有点乱,不知道是不是今天面试的人比较多,基本上都是很多人来回走动,有点吵。
4.小米电视:
一边
可能因为面试的人是我的学长,所以并没有问我太多技术上的问题,只是说了一下我当时在做的项目,然后讲了一下,主要是画图的方法和一些相关的知识。
我感觉很放松,心想如果所有的面试都这么轻松就好了,然后我就直接去了下一个面试。
第二面
第二位面试官看上去很温和,但也是一个对技术追求精益求精的人,问的问题很细致,具体问的顺序我不太清楚,但他问了以下几个问题。
▶ 单例,快速排序,返回打印二维数组
▶ 写一个死锁,死锁是如何发生的,以及如何防止死锁
▶ 有哪些不同的启动模式以及它们代表什么含义?
▶ 谈谈该项目做了什么
三面
他是个很友善的人,他马上告诉我,前面大部分技术问题他都问过了,所以不会再问我细节问题了。然后他给我出了一道算法题,要求我说出时间和空间的复杂度,以及有没有更好的解决方案。
▶字符串反转,讨论复杂性。
▶谈经验和项目
人力资源
HR问的问题都是有模板的,都是常规询问...然后面试就算完成了。
总体来说,TV是需要测试开发,但是我暂时还是想做开发不做测试,所以我猜TV是不会给我的,虽然他们说过几天会正式发给我,但是最后还是没有。
小米电视坐落在一个独立的小庭院里,环境不错,整体的开发也不错,毕竟是小米生态链的重要组成部分。
5.网易:
网易大厦就在百度大厦旁边,感觉还不错,我到的稍微早了点,在前台等了大概二十分钟面试官就带我去面试了。
笔试
具体内容记得不是很清楚了,不过大概有以下几种,都是比较基础的:选择题,程序输出题,四种算法,简答题。
▶给定一个int类型的n,输出从1到n的一个字符串。例如,如果n = 4,则输出“1 2 3 4”
▶输出所有笛卡尔积组合
▶单例模式
▶最长递增子序列
它们并不是很难,基本上任何人都可以制作它们。
一边
第一个面试官是一位资深开发工程师,水平确实很高:所有问题问得非常细,问的都是循序渐进的,从简单的知识开始逐渐深入,直到你回答不出来,而且问的都是你自认为擅长的知识点。
由此可见这位面试官的水平有多高,我深深地佩服他。
下面我会简单讲一些问题,但是最后他们总会问出很深入的问题。
▶针对刚才做的题目中的一些错误进行了讨论,主要是类加载和内部类方面的知识,特别是JVM层的知识确实有些欠缺,但大部分都能答出来。
▶双亲委托机制,类的五种加载过程
▶ Java类加载器的加载过程
▶ 机制,从Java到层,面试官问的很详细,不懂的都会给我解释。
▶ 和
▶ View的绘制过程,详细到代码,讨论不清楚的地方立刻打开电脑和我一起看源码
▶事件分发机制
▶ 常见设计模式,利用静态内部类实现单例的原理是什么
▶ 线程同步,如何实现。
▶源代码,源代码
面试完已经12点了,聊了一个半小时,他告诉我过了这个阶段基本就没问题了,面试官也是个很幽默的人,带我去网易食堂吃饭,这里的食物确实很好吃。
第二面
面试之前我以为至少会有3轮技术面试,但是没想到直接进入面试。
后来我发现,第一轮面试的结果还是很重要的,面试官都是很有经验的工程师,只要你过了,基本就没什么问题了。
▶项目介绍及项目相关的一些问题
▶ 下拉的实现,需要关注和优化的地方(不是优化,是下拉的优化)
▶一些优化方案
▶ 介绍目前的项目,并概括解释目前使用的技术
总体感觉网易氛围很好,技术实力很强,自己的技术能力也很强,而且面试官还说有时候自己会写一些代码。
一般写代码的人很少。
据悉,网易严选目前正在招聘Java开发、数据分析等技术岗位,有意向者可联系场地主人!
6.小米:
这是第二条采访消息。
这次是小米最核心的部门:MUI部门,主要做阅读APP,听说发展的很好。
为什么我要面试小米两次?因为之前小米内部推荐过我,但是一个星期都没有消息,所以我就网上投了简历。小米电视面试完之后,他们又打电话让我面试一次。我到小米前台的时候,没人。我问了保安,保安让我给HR打电话,但是HR没接电话。我等了半个多小时,HR终于回电话了,打电话给面试官接通了我。第一个面试官还以为我不来了。
一边
▶谈谈项目,一些相关的知识,以及在项目中做的优化
▶ gc回收对象的依据是什么?引用计数和gc root分别是怎么实现的?
▶ 内存泄漏是如何发生的?给出一个具体的例子,以及用什么来检查内存泄漏
▶ 自定义View的绘制流程
▶ 给定一棵二叉树和一个值,找出所有和为该值的路径;删除区间{1,3}{3,6}{3,4}{6,8}内的重复项,并删除至少几个集合,使得集合没有交集。
第二面
▶ 什么是ANR?ANR的时间限制是什么?如何处理ANR?除了系统生成的.txt文件外,程序中如何检测ANR?写出伪代码。
▶ 一些编码和解码的知识,I帧,B帧,P帧的区别。
▶ 一些优化方案。
▶ 算法n/m,如何判断结果是否是无限循环小数。
三面
第三位面试官看上去很年轻,说话也相当幽默,但是技巧却无可挑剔。
▶项目介绍
▶ 事件分发机制
▶ 算法,将一个字符串转换成int型数,考虑输入错误,溢出,正负值等情况,要小心。
▶ 给定一棵搜索二叉树,输出一个已排序的双向链表。
四边
我以为是HR面试,结果不是,应该是面试,一开始就说不会面试技术方面,我就把我项目最精华的部分介绍了一下,简单介绍了一下。然后就问我为什么从上一家公司离开,为什么选择小米……面试完之后说今天太晚了(快晚上8点了),HR走了,让他们下周电话联系,然后就把我送下楼了。
第二周小米就发消息给我说面试通过了,并且谈了一些具体薪资福利的问题。
7. 百度:
一边
面试官的思维很跳跃,经常在我问到一半的时候就问其他相关问题,回答完之后再继续我之前说的,这个节奏我有点不适应,顺序可能不对。
▶ 以=new();为例讲解类加载过程。
▶ JVM相关知识,GC机制。
▶ 类加载器,双亲机制,类加载器。
▶ 流程的级别及其差异。
▶ 插件原理。
▶集合框架、list、map、set具体实现类有哪些,有什么区别?
▶ 原理,原子类。
▶原理.
▶ 机制。
▶ 视图绘制流程、事件传递机制、异步消息机制。
▶ 问题中的128(-128~127)是关于常量池的概念,这个我没回答。
▶线程池相关的知识。
▶ 机制、实施方案等
▶ 算法如何实现。
第二面
第二位面试官看上去比较和蔼,所以气氛没那么紧张。说实话,来到百度我还是有点紧张的。
▶讲述项目中的相关知识。
▶我们谈论了以前的作品。
▶内存泄漏、如何查找它们以及它们是如何发生的。
▶图片的大小如何计算,加载流程(如何保证不发生内存溢出),二级缓存,算法。
▶简单介绍Java中的泛型、泛型擦除及相关概念。
▶优化仅与布局优化,内存优化等有关。
▶ 对于SQL相关知识优化解答,我就说不太了解就过了。
▶ 算法题:一个m*n的矩阵能组成多少个正方形(2*2能组成1个正方形,2*3能组成2个正方形,3*3能组成6个正方形)
三面
因为每次面试都会录音,所以第三位面试官问的技术问题就没那么详细了,一般都是以讨论的形式跟我聊,一般会涉及到以下几个方面,当然深度越深,面试官对你的评价就越高。
▶项目相关。
▶优化。
▶插件相关技术,热补丁技术是如何实现的,与插件有什么区别。
其他的我记不太清楚了,但总体来说讨论的还不错,我以为百度会有很多算法题,结果只有一道(幸好……)。
本来要面试的,第三位面试官人很好,说觉得我技术不错,就去看看。但是我当时有事,出去了,不知道什么时候回来。于是就约好那周下班后去,然后面试官亲自送我到门口,跟我聊了好久,还算不错。
四边
第四次面试是经理面试。经理好像已经不涉及技术问题了。他基本不问技术问题。他只是泛泛地问了问项目情况,以及我在项目中做了什么。他还谈到了其他话题,仅此而已。然后他就让我走了。
我大老远过来,才聊了不到半个小时,唉,毕竟是百度的,我回去等HR电话吧。
几天后,HR 又联系我谈薪资等福利,让我再去一次。面试了这么多公司,这一家是最累的。百度牛逼,谁能怪他?他一直说……
感觉百度这几年发展不太好,一直在走下坡路,不知道是不是打算搞大动作了,百度人也出来不少了,不过百度毕竟是百度,还是很厉害的。
8.阿里巴巴
我一直梦想就职的公司阿里巴巴终于打电话给我,邀请我参加面试。
由于工作时间不到一年,我被内部和线上都拒了。我应聘的是杭州的天猫,是一个虚拟现实团队(刚开始听的时候觉得这个名字不太适合我),但直到面试完我才知道。
面试官也告诉我,领域内可能需求不是很多,更多需要VR技术在领域内的应用,包括这样的技术。
一边
▶ 他问了我博客上写的一些东西,从项目的概念到设计,再到详细的技术实现,可以说是面面俱到,因为我对我写的博客比较熟悉,所以回答的也很好。
▶相关知识,,,绘图流程。
▶询问目前正在进行的项目,以及具体的实施和优化情况。
▶ 多进程之间的通信机制。
▶ 询问了看过哪些框架源码,并进行了讨论。
我们聊了大概一个小时,聊得还不错。我的问题基本都回答了。他给了我很多建议,详细解释了我听不懂的地方。其实有一半的时间他都在跟我讲产品,这个产品为什么好,如何迎合市场,整个产品该怎么设计等等。我觉得他跟我现在的水平不是一个级别的。
果然,第二天我就收到邮件,说我目前不适合所申请的职位。
面试结果
除了阿里巴巴和淘宝,其他公司基本都给我弄到了,这段时间我会把华为的工作全部交出去,休息几天,有时间就回家休息几天。
采访摘要
我对互联网有一些小小的感悟:随着资本的降温,整个互联网市场也在逐渐平静下来。
从最开始的应用开发人员只要说几个四大组件的名字、写个监控事件就能拿到几万元的月薪,说到底,不是工作难找,而是应用开发工程师这个岗位已经成了常态,不再是一个没技术也能拿高薪的热门职业。
当然这也不是绝对的,现在市场上还是缺少中高级开发人员的,特别是一些知名公司,他们在招聘员工的时候,不仅要求技术过硬,还要素质高,学历好等等,一般情况下可以给你高薪,但前提是你要足够优秀,或者让面试官觉得你很优秀。
其实面试的过程就是一个向别人推销自己的过程,对于我们(刚毕业的同学,因为我毕业还不到一年)来说就是让面试官觉得你的技术不错,值得培养。
感想说的太多了,给大家一些实用的建议吧,我粗略的列出每轮面试大概的范围和深度,但都不是绝对的,还是要看具体情况。
1. 笔试
对于社会招聘的同学,基本不需要笔试,但有些公司是有要求的,比如今日头条、网易等,笔试都是一些基础知识,比如Java等,网络、计算机等一般没有笔试,一般大家都能答出来。
2. 一面和两面
就我最近几次的面试经历来说,第一轮和第二轮面试的问题差别不大(大部分公司都是三轮技术面试,但也有例外,我在网易就面试了两轮技术面试),基本都是一线开发人员面试。
主要检查您的:
▶你是否拥有扎实的知识基础知识,并且能在日常开发中熟练运用?
▶能否清楚阐述你做过的项目和用到的相关知识?
▶基础知识
▶Java基础知识,大概有多线程,线程安全,集合类,JVM,类相关知识等。
▶阅读一些源代码
▶优秀第三方框架源码阅读
3. 三边和四边
一般公司都有三轮技术面试,但也有四轮技术面试的,不过不多。在很多公司,基本上每一轮面试官都会把自己问的问题记录下来,方便下一轮面试官参考,同时也避免同一个知识点问多次。所以这一轮面试,基本上不会再问基础知识了。
将从两个方面来考察:
▶广度:比较新的技术(插件等),JVM,GC,网络,数据库,(一般不会问面试官问过的问题)
▶ 深度:一般题目会通过1~2个问题来考察,例如:map接口下有哪些子类->以及区别->实现原理->如何解决hash冲突->是否看懂->实现原理->实现原理(看书不是锁着的,是用来用的)
▶对项目的贡献和所做的优化
▶设计能力:基本没什么要求,看你面试的职位,我只面试高级开发人员,不面试架构师。
▶工作中的亮点和亮点。
4.人力资源面试
基本上到了这一轮,你就通过了面试了。
HR会询问你的经验,但最重要的是和你谈薪资。这一轮大家应该对自己的薪资水平有个大概的了解,一般比原有的薪资高出20%~30%左右。当然,如果你面试时表现很好,可能就不会受到这个限制。当然,如果公司真的想要你,即使你要求的薪资太高,HR也会很客气的告诉你,不会直接pass掉你。
5. 选择公司
由于很多朋友问我最后选择了哪家公司,最终我选择了更适合自己的今日头条。
当然这不是唯一的选择标准,我认为选择公司应该考虑以下几个方面:
▶公司是否处于成长阶段?
▶ 你做的事情是否有市场价值,你是否对它感兴趣
▶ 通过面试,基本可以了解一下即将共事的同事的技术情况,毕竟身边的人都很优秀,那你肯定也不会差,一定要和优秀的人一起工作,你会成长很多。
▶薪资。毕竟我们找工作是为了养家糊口。我相信这也是很多人决定去公司工作的重要原因之一。
以上就是我个人对于如何选择公司的一些想法,不足之处还希望大家指出,大家多多交流。
羊马场特别邀请
K-(Ya Chao)的博客链接是
· 结尾 ·