前言

这个文章主要是笔者今年的校园秋招android岗的面试经历,希望对正在秋招的和准备明年春招的大四、研究生、甚至是博士生的小伙伴们,有所帮助。大家可以参考一下。

  • 个人背景:广东某一本大学大四软件工程专业学生,大二开始学习的android。学校里主要讲的是一些基础的东西,android的知识主要是靠自己课外花时间自学。
  • 秋招结果:鹅厂offer,其他公司投了将近10家。感觉和java的同学相比,今年android秋招还是相对比较容易的,可能是因为今年android的同学比较少的缘故吧。投的公司也基本上都是大厂,面试也感觉没有往年的难,几个公司甚至笔试都省略了,估计他们是真的有点缺人吧。

面试经历

因为很多面试时间有点久了,所以许多细节都记不清楚了,只能挑一些印象深的讲,希望大家海涵。

腾讯

拿offer了,最终也决定是它了。面试流程是笔者投过公司里最繁琐的,当然,面试质量也是其中最高的。

一面

很多细节都记不起来了,7月下旬面的,真的太早了。QQ视频的方式面的,加了面试官QQ。在学校里,找了一个没人的小教室,结果没有WIFI,还得自己开热点。。。
视频开了,结果没看到面试官的人,对面是黑屏,看不到人,但有声音,因为对面试没影响,就没管,然后就开始了。

面试官: 先简单介绍一下自己吧
笔者:(扯了一大堆)大四软件工程学生,大二的时候学习的android,后续又陆陆续续学了一些相关的东西。平时学习的话,我主要是通过关注了一些技术的公众号、买一些技术书籍来看和上网查资料来进行。一般遇到问题的话,我喜欢先翻源码,因为“源码是最好的老师”吧?其次我会上它的官网去查,实在找不到的话,再用搜索引擎。搜索引擎的话,我感觉google搜出来的质量要比某度搜出来的要高;而且,一般来说,英文的搜索结果质量要高于中文,许多问题的答案都是在overstackflow这种网站上找的的。因此,我一般喜欢用google进行英文查找,这样效果是最好的;当然,不排除有的时候,中文的搜索结果也不会太差。比如,一般来说,像源码分析一类的文章,只有中文的,好像老外对这个不感兴趣吧?。。。
面试官: 看你简历上写了很多的框架,有看过它们的源码吗?
笔者: 说了一下Retrofit、Butterknife和郭婶的Litepal,提到了一下java的预编译(Butterknife有用到)和反射(Butterknife和Retrofit)。吐槽了一下前两个框架,说反射性能消耗过大。
面试官: 根据你提到的这些问题,有想过怎么解决吗?实现过吗?
笔者: 考虑过使用预编译去代替反射,然后说了一下java预编译的内容,并和C语言的宏做了一下对比。自己也尝试过,但没成功,因为java的预编译必须有注释,而注释的使用范围有限。
面试官: 读过OkHttp的源码吗?
笔者: 没有,主要看过Retrofit的,知道它是基于OkHttp来的,但没看过OkHttp的
面试官: 好吧(语气好像有点失望),对于Activity的启动过程知道多少?
笔者: 说了一下Activity的启动过程,5.0和8.0之间的区别,顺便说了点插件化、热修复的内容。也没太多,主要是外来的Activity如何通过启动时的验证问题(自己也没弄过,但之前看了一些相关的文章)。
面试官: 应该是对我知道插件化、热修复的内容比较满意,又问了Service的启动过程
笔者: 没说很好,因为没想到会问这个,之前看的内容也记不大清楚了
面试官: 没关系,很多面试者都是这样的,知道Activity,但不清楚Service的。关于TCP的三路握手,知道多少?
笔者: 说了一下TCP的三路握手和断开时的四路握手。面试官又追问为什么这样设计。
中间还问了许多内容,但真的记不起来了。。。


面试官: 知道进程和线程区别吗?
笔者: 按照Linux的进程与线程内容说的,毕竟android是基于Linux的,应该也差不了多少。然后提到了用kill命令向进程发送信号
面试官: kill不是用来杀死进程的吗?
笔者: (吃了一惊,以为自己搞错了,但又思考了一下)那是它的默认调用,事实上,kill命令可以加上一些参数,来实现向进程发送一些其它的信号。然后手写了一个kill发送其它信号的例子,拍照发给了他,并向他解释
面试官: (沉默了一会儿)那我再问你一个算法题吧,如何知道一个链表里是否有环?
笔者: (刚好在书上看到了,所以马上答出来了)追击问题,去用。。,(只说了一下原理,没有写代码)
面试官: 好吧,今天面试就到这里。你有什么问题吗?(一小时了,估计他也厌烦了)
笔者: 您觉得我有哪些不足吗?(感觉没戏了,因为很多东西,笔者答得不是很好)
面试官: 总的来说是不错的,但一些基础部分,还是需要巩固。说了很多,记不大清了

二面

过了差不多一星期,然后来的消息,通知二面。也是加面试官QQ,然后QQ视频。
面试官在一个小房间里,白色的桌子,人有点胖,拿了一个mac的笔记本电脑。开始还是自我介绍,和第一次说的差不多。

这次忘的更多了,只能说几个印象深刻的
面试官: 如何知道一个应用是否发生了ANR?
笔者: (有点惊讶,没想到会问这个)说了一下ANR的定义,然后在面试官的提醒下,说出来了怎么发现ANR
面试官: Flutter有多少的了解?
笔者: 这是Google的一个新技术,主要目的是打通android和ios的壁垒,一套代码,多处运行。而且,Flutter野心极大,好像pc端,也想涉及。但具体内容的话,没有用过。新技术方面,主要用过Kotlin,然后说了一些Kotlin的内容
面试官: 关于Kotlin的协程,知道多少?
笔者: 很蒙蔽,不知道什么东西,自然也不会。。。
面试官: 发了一张图片过来,是段代码。让对两个有序链表进行合并
笔者: 写了最通用的解法,写得很慢,因为记得有个更优解,但一时想不起来了。期间一直在问面试官细节,但他都不说话。写了一大推,参数判断啥的,能写的都写了,写了很久,最后拍照发给他。
这个应该不是最好的,我记得Leetcode有个更好的解法,之前看到过,但一时想不起来了。
面试官: 没说什么。泛型呢?
笔者:(好像面试官口音的问题,开始以为是啥新技术,搞了半天,才知道是泛型)说了一下java泛型的实现原理,然后和C++的模板进行了一下对比
面试官: 最后让问个问题,问的和一面差不多,自己有什么不足。

三面

差不多又是一个星期,然后有消息。但这次是电面,结果时间不好,那段时间在实习,电话来的时候,还在车上,结果那天还有点堵车。最后跑回家的,打电话给面试官,开始面试。
听声音应该不是很年轻,声音也比前两位面试官和蔼多了,感觉更亲切。让笔者不要太紧张。

问的问题不是很多,挑几个重要的讲:
面试官: jvm有多少的了解?
笔者: 说了下jvm的内存模型什么的,然后问到了类加载机制,没说得很好
面试官: java的引用类型,知道多少?有何应用?
笔者: 这个是常考点了,自己复习的也比较好,说的很流利。应用的话,主要说了用来解决内存泄露什么的,然后又说了内存泄露的一些东西
面试官: 简历上的项目经历,能说一下吗?又遇到什么问题吗?怎么解决的?
笔者: 主要提到了自己大二时参加的一个学生项目,当时有大牛带,还是可以说许多东西的。
问题的话,提到了最近自己写的一个小东西,java和kotlin的混编。问题是,kotlin里找不到java的一个方法,IDE里面没问题,编译时报错。最后发现原因,编译器在编译时,编译顺序为:Kotlin、java预编译、java。而java里,我用了一个预编译框架,生成那个方法,因为编译顺序的问题,编译时,kotlin里自然找不到那个方法了,因为那个时候,该方法还未生成。
解决方法的话,当然是不用那个框架了,有点水。。。但可以解决问题


因为面试官提到说等下还有另一个面试,所以这次电面,只弄了三十多分钟;而前两次,都是一个多小时。

HR面

几乎又是一个星期,刚好那天还有其它事,实习请了假,可以专心准备面试。上午十点,电话面试。
起初笔者以为仍然是技术面,所以当天还在看一些技术的文章,所以电话打过来的时候说是HR面的时候,还有点吃惊,没想到这么快。
面试官: 为什么想加入腾讯?
笔者: 扯了一些平台对个人发展的重要性。然后指出腾讯是一个足够包容的公司,容得下不同的看法,个人很喜欢这点。之前看过一个黑腾讯的文章,热度很高,腾讯官方知道后,只是简单提醒作者不要中伤他人,还允许其文章在QQ、微信上转载。
面试官: 个人的兴趣爱好?
笔者: 说了下喜欢看书,平时不怎么玩游戏(手残党,基本都只能坑队友,所以玩得少)。最近在看一些英文小说,所以自认为英语能力还不错。
面试官: 有女朋友吗?
笔者: 没有。。。(单身狗的无奈,有点奇怪为什么问这个)
面试官: 成绩如何?
笔者: 个人成绩不是很好,因为自己对于大学课程,目标是可以及格,顺利毕业就行了。其他的精力,花在学习技术上面了。比如,自己学习Linux的时候,装Win10和Ubuntu的双系统,就花了将近一个月(游戏本装Ubuntu是个大坑。。)

后面还问了下报道时间啥的,然后就差不多结束了。这点小伙伴们要注意一下啊,公司只会取你说的最早时间,不会管后面的其他时间的。所以,你说的最早的那个时间,就是你的报道时间了(于是乎美好的大学时光便将提前结束了。。)

奇安信(360)

来学校开了宣讲会,本来跟笔者没关系的,没有招android的。笔者的一个做java的好友想去面试,但胆子太小,把笔者一起拉去了,于是投的Linux开发。

笔试

一半C++,一半Linux知识。C++的基本上没答出来几个,Linux的大部分猜出来了,自己开发环境就用的Ubuntu,所以Linux相关的知识比较熟悉。算法题也是java写的,虽然这个岗位是用C++

技术面(2轮)

因为做android的,对C++很多东西不熟悉。直接告诉面试官,是听了宣讲会,感兴趣才来的(不可能说是陪别人来的吧。。)
主要问的一些Linux知识,和自己android的项目经历。整体还是很容易的,估计是照顾笔者不熟悉C++的缘故吧?

HR面(挂了)

因为面试官提及她是负责全国招聘的,不只是广东区域的,所以问了她其他分司有做android的吗。然后面试官就提到了成都的分公司有做android逆向,可以帮笔者问一下。
于是就问了面试官许多成都分公司的事情(这个大家要注意啊,估计笔者HR面不通过的原因就是这个。。)

  • 那位java好友:顺利拿了offer。但因为java后台是在南京和北京的分公司,广东只有做PHP的,于是转PHP了。他本人是广州土著,所以不想出广东省。

VIVO

一轮技术面,一轮HR。过了,但最后放弃了offer。

技术面

主要问了项目经历和一些android基础,期间笔者还说了十几分钟的Kotlin知识,结果面试官说不用Kotlin。。。
感觉技术面只有一轮还是太少了,笔者感觉自己很多东西说得也不是很好。

HR面

小姐姐很漂亮,说话也很亲切。主要问了笔者一些实习期间的经历(写简历时刚开始实习,所以没写上去),说了一下自己实习期间的收获,主要是团队开发与个人单干的区别,团队精神啥的,技术上的东西没说到,可能HR小姐姐也不知道吧,就没提及。。。

美团

没有笔试,直接一面。因为没有认真对待,主要个人还是想留在广东,所以一面后直接结束。
貌似美团今年android有点缺人,招聘信息上android岗都是红色的。
在成都面的,成都这边的话,感觉大厂也挺多的(腾讯的天美、微信事业群,阿里的蚂蚁金服,美团,抖音);缺点的话,感觉竞争压力有点大,很多陕西、重庆的小伙伴也过来面试了,貌似他们那里没有什么合适的互联网大厂


主要问了android的消息机制、jvm内存模型、Object类、HTTPS与HTTP的区别,最后手写一道算法题(对一个数组位移N位)。因为没有认真准备,所以走了个过场,就结束了。

网易

两轮技术面,一轮HR,目前还没有消息。不过就算过了,肯定也会拒绝的,因为已经决定去鹅厂了。

最有印象的就是,网易的秋招,本科生非常多,感觉至少有50%;其他公司,基本上除了笔者,其他全是研究生,加上笔者,可能就两三个本科生。当然,和其他公司相比,网易的笔试感觉是最难的,几道算法题除了得到结果,不做优化的话,都会超时。
另外的话,网易的HR小姐姐是所有面试公司中,颜值最高的,很惊艳。

技术面

基本上和网上差不多,没什么可讲的。

印象深刻的是,二面的面试官问的几个问题
面试官: 你喜欢用Google,是怎么弄的
笔者: 用的Shadowsocks,但具体原理不太了解
面试官: 为何不考研
笔者: 家里条件不允许,可以的话,想出国,去美国。但现在的局势下,好像未来10年,都没什么希望了。。。
面试官: 个人的未来规划
笔者: 短期是先提升个人能力,争取尽快成为中级开发人员;后面的话,希望能自己写点技术书籍、开个技术公众号啥的,和大家分享技术;更长远的话,希望可以参与一些大型开源项目的开发,为开源社区贡献自己的力量。。。

HR面

也没什么,但有个问题印象很深刻,这也是大家面试时的需要注意的
面试官: 你对个人的薪资待遇,有什么要求吗?
笔者: 这个的话,个人倒不是十分地在意,最起码,能保证我每个月的饮食住房等基本开销就行了。比起这个,我更关心个人的成长问题。比如说,工作2年之后,我的技术水平有多大的提高,是否和刚毕业一样,没有什么改变呢?这些问题,才是我关注的重点。

其他公司

因为各种原因,自己主动 提前结束面试的

  • 小米:没有笔试,直接一面。时间冲突,拒了。
  • 华为: 鹅厂的事情定下来了,就没考虑再去面试其他公司了,浪费别人和自己的时间,而且答应了的事情,自然应该做到,没必要三心二意。拒了一面。
  • OPPO:理由同上,没有参加笔试。

个人学习

英语

迈向中高级程序员的必备技能,没什么好说的。主要要求的是你的读写能力,听说的话,基本不会用到。基本要求(不要求一步到位,但需要逐渐精进):

  • 阅读源码、github、overstackflow、android官网、官方文档等的内容
  • Google查阅东西,一般来说,技术问题的答案质量排序为:Google英文、Google中文、百度(真的不是在黑。。。)
  • 代码命名:好的命名可以抵过一大堆的注释
  • 英文原著阅读:能到这一步的话(,要很久,不要急于速成),就程序员而言,英文能力基本就够用了

Linux

作为一个程序员,不会Linux,感觉就像无照驾驶,更别说android是基于Linux而来的了

  • shell
    简单的shell脚本编写和常用的几个命令要掌握吧,比如find、grep、kill、ps。。。
  • Linux C编程
    NDK编程之前的基本技术储备,对于理解android底层的一些东西,也有很大的帮助
  • vim
    学会之后,可以解锁一个浏览器插件——Vimium;相比鼠标在浏览器里点点,这玩意儿的装逼程度,急剧上升

技术公众号

公众号的缺点的话主要是知识比较零散,优点的话是随时随地可以查阅。不需要每次的文章都看,挑你自己需要的就行了

  • 这里推荐几个大佬的公众号:郭霖、玉刚说、后厂村刘皇叔、大飞码字。。。

不仅是技术,大佬们很多非技术方面的东西,也是值得学习的

书籍

极重要的学习方式,相比其他东西,书籍的内容更加系统化和全面。当然,所花的时间和精力也是极大的。一本书,几个月到半年,都是常态,更不要说一些书,需要反复研读了。这里推荐几本笔者读过的,认为质量比较高,或者有特定价值的书:

  • 《第一行代码》
    android入门第一书
  • 《Android开发艺术探索》
    把这本书的内容吃透,你面试的android知识,基本上就没问题了
  • 《Effective Java》
    java程序员分两种,看过这本书的,和没看过这本书的。
  • 《UNIX环境高级编程》《UNIX网络编程 套接字联网API》《UNIX网络编程 进程间通信》
    Unix三部曲,看完之后,你对Unix、Linux、操作系统和计算机网络,都会有一个全新的认识
  • 《Android C++高级编程 使用NDK》
    NDK开发入门用,缺点的话是书有点老,上面的项目构建还是make,而现在都用cmake了
  • 《Kotlin实战》
    入门kotlin用,未来可能替换Java进行android开发,虽然现在国内没有几个公司用(笑。。。)
  • 《漫画算法》
    算法零基础同学的福音,相比其他算法书,这本书更适合用来进行算法入门,java编写
  • 《Java编程思想》
    笔者实习时的老大和现在鹅厂所在部门的老大都提到的一本书,重要性不言而喻。国内也有英文版,还比较便宜,有能力的小伙伴可以尝试一下。

其他问题

  1. 面试官: 我们部门的研究生很多,你一个本科生,有什么想法吗?
    笔者的小伙伴遇到过的一个问题,别扯什么学历无用论,完全作死的节奏。提供一个例子,大家可以参考一下:

对于这个的话,其实我本人到不觉得是一个劣势,反而感觉是一个非常好的机会。正所谓,近朱者赤近墨者黑。能和这么多优秀的人一起共事,我相信:对我个人的能力也是一个极大的锻炼,会对我个人的成长产生极大的帮助。所以,我也希望能有机会在这样的工作环境下工作。

  1. 大厂有学历歧视吗?
    大概率有,笔者面试的公司里,基本以研究生为主,本科生都很少。而且,不知什么原因,也只见过一本的同学,二本、三本的同学,都没遇到过。当然这不代表这些同学就没机会了,你的能力够强,还是有可能进大厂的。人家让你过来面试,就是有招你进来的想法的,剩下的,就看你自己的造化了。
  2. 多余的话
    另外笔者发现一个很严重的问题,许多研究生的小伙伴,虽然技术上很厉害,但面试的时候太沉闷了。比如面试官问一个东西A,如果不会,就直接说不会了;而一般情况下,你如果不会A,说与之相关的B,也是可以的。
    面试官又不知道你的技术水平如何,你如果不主动去说,然后又运气不好,连续遇到几个不会的问题,就直接再见了。因为你这样给面试官的感觉,就是你什么都不会,面试官不会去再花时间来问你更多问题的。面试官的时间也很宝贵,而且那么多面试者,不可能每个人都能面面俱到的。
    所以,面试的时候,一定要主动点。可以的话,一定要多说。比如说道知识点A的时候,最后也最好能把相关的知识点B也提一下。

2019校园秋季招聘,android岗,个人面试细则相关推荐

  1. 海康威视2017校园秋季招聘技术支持工程师面试经验

    面试单位:杭州海康威视数字技术股份有限公司 面试岗位:技术支持工程师 面试时间:2017年10月22日下午 面试地点:本校 面试过程: 先询问了我一些基本的家庭状况,算是缓和下面试的气氛. 紧接着开始 ...

  2. 拓尔思信息科技股份有限公司2019校园春季招聘

    拓尔思信息科技股份有限公司2019校园春季招聘 笔试很水,内容为Javase + MySQL.中午12点笔试完,1:42打电话通知笔试成绩很好,2点面试,工作地点为成都,我意向城市有且只有北京,so已 ...

  3. 字节跳动Android岗经典面试真题,大厂面试题汇总

    职业生涯规划 Android系统的市场地位 Android程序开发的技能成长经验 Android程序员为什么需要学习Html5 Android软件工程师为什么不会被前端替代 为什么小程序无法替代原生开 ...

  4. android自学视频!Android岗大厂面试官常问的那些问题,终局之战

    前言 说起程序员人们的第一印象就是工资高.加班凶.话少钱多头发少.再加上现在科技互联网公司太吃香,bat.华为小米等公司程序员加班情况被广泛传播,程序员用生命在敲代码的印象刻在了很多人的心里. 与其它 ...

  5. Android岗大厂面试官常问的那些问题,知乎上转疯了!

    前言 对于android开发,我们大部分工作都是在应用层,但为了体现"技术含量",以及"知其所以然",以便在遇到具体问题时不至于束手无策,因此有必要了解底层的工 ...

  6. 2020年招聘算法岗,面试官最看重哪些新技术能力?

    [导读]合格的算法工程师真正应该具备什么技能?在面试时,面试官又会如何验证你具备这些新技能?毕业仅一年,相继拿下头条.阿里.腾讯等offer的本文作者,为你绘制了一幅面试技能雷达图. 1 ◆◆ 哲学第 ...

  7. 爆赞!Android岗大厂面试官常问的那些问题,论程序员成长的正确姿势

    开头 昨天去面了一家公司,价值观有受到冲击. 面试官技术方面没的说,他可能是个完美主义的人,无论什么事情到了他那里好像都有解决的方案,我被说的无所适从,感觉他很厉害. 但我不能认可的是,面试官觉得加班 ...

  8. 2021Android高级面试题总结:字节跳动Android岗经典面试真题,面经解析

    背景 曾经有人问我,为什么要下班了不找点乐子,还花这么多时间去写一份资料.你是不是傻! 我无言以对! 但是不得不说,这份笔记确实倾注了我很多心血. 至于,我为什么要做这份资料,为什么又要写这篇文章!是 ...

  9. 手机app安卓开发!字节跳动Android岗经典面试真题,文末领取面试资料

    阿里面试 自我介绍 首先要介绍自己的项目经验和个人的擅长点,因为面试官主要考察你的表达能力和语言精简能力. 简历的编写其实这里可能需要注意几点: 1.标题的直接按照姓名-几年工作经验-应聘岗位格式来填 ...

最新文章

  1. 如何通过机器学习还原图像色彩
  2. debian+pxe+preseed.cfg 安装配置
  3. 关于java设计模式笔记
  4. 卷积神经网络模型解读汇总——LeNet5,AlexNet、ZFNet、VGG16、GoogLeNet和ResNet
  5. M2: XAML Controls(2)
  6. 连接失败_iG.Firefox连接失败?iG新赛季仍未敲定主教练人选
  7. 前端开发技巧-那些不常见但十分有效的小玩意
  8. 一个经典实用的iptables shell脚本
  9. c4d如何导出材质?c4d如何单独保存材质?
  10. in not 效率太慢_[笔记] SQL性能优化 - 避免使用 IN 和 NOT IN
  11. 最重要的三种能力:思考力、行动力、表达力
  12. Linux之yum 命令详解
  13. TypeScript 学习笔记(四)--- 泛型(Generics)
  14. kubectl port-forward 踩坑记录
  15. 计算机基础-数据存储
  16. Thinkpad 蓝牙键盘 Fn 键处于锁定状态的解决方法
  17. NYOJ 1238 最少换乘
  18. 流量Ⅰ--一文了解pcap网络数据包的结构?
  19. 建站3年仍旧失败 ! 个人站长失败仿佛是必然
  20. 反渗透膜轻松解决电镀行业水质问题

热门文章

  1. 关于Texture Cache简单总结
  2. 虎牙上市首日大涨34.75%,转折后的游戏直播行业去向何方?
  3. 楼宇对讲在IP网络中的发展
  4. linux vlc乱码,一劳永逸解决VLC播放中文字幕乱码问题
  5. matlab bnt,matlab的BNT贝叶斯工具箱错误求教
  6. css :box-sizing
  7. 可视化处理 | ArcGIS和经济引力模型的城市联系度分析
  8. 「编程羽录」上线,程序员必备的这些技能你能get到嘛?
  9. 分享适合个人和家庭使用的记账本
  10. VS(Visual Studio)中如何添加和使用资源图片