前言
这里是我整理的2019年至2021年期间通过各个渠道花时间专门整理的面试题,其中面试重点和难点都有详细解析,重点讲的是Android各方面的专题讲解包括Java小部分的技术讲解。这些题目有点技术含量,需要时间去研究一下的。
这里我不仅给大家整理了多套BAT面试题,还有小编一路收集到的面试方面的资料包及面试相关视频资料,这些在文末有提供免费领取方式的,其中包括初级,中级,高级不同水平以及不同专题所涉及到的常问范围,及面试专题和答案和系统学习视频资料,免费分享给大家,省去网上到处搜索资料的麻烦。
希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统!
2、正文
首先,我的相关经验仅限于技术/开发类招聘,产品、策划等方向我并不了解,不过我在腾讯和招聘过程中也认识了不少相关方向的小伙伴,如果有相关需求的同学也可以找我咨询他们的联系方式。
回到正题,招聘相关的经验,我准备从时间点、准备、方向和面试经验四个方面来说。
2.1、时间点
技术/开发类的招聘,对于本科生而言,需要重点关注两个时间点:实习生春季招聘和应届生秋季招聘,也就是大三下学期的那一年的3月开始(如我是2016届入学,也就是2019年3月左右开始的)的春季招聘,主要面向实习生招聘,实习时间一般为7—11月;和那一年9月开始的秋季招聘,主要面向应届生招聘,入职时间也就是毕业之后。这个3月、9月都不是精确地概念,只是集中在那个时间段。
这两个时间点对于招聘是相当重要的,因为这两个时间点,不论大、小公司都会集中进行招聘相关的工作,如果错过了这两个时间点,后面都会很困难,也就是说如果你想在招聘过程中顺利的找到心仪的工作,提前准备是必不可少的,特别是4月和9月都是招聘的高峰期,如果你在这两个高峰期没有准备充分,可能在面试中就不能发挥出自己的实力,错过很多进入大公司的机会。
对于春季招聘,我的建议是2月份左右开始规划和准备(我这里讲的准备是对以往的知识进行梳理和复习,并不是指2月份才开始学习);对于秋季招聘,这个要看你个人的规划,一般在实习期间也可以进行适当的准备和复习,特别是对于实习不满意或者没有转正的同学,在实习期间复习也是必不可少的。
除了这两个时间点,也会有一些公司有补招、散招,不过还是抓住正式招聘比较有优势,特别是大家一起准备的话,效果会更好。另外,实习和秋招的机会都要好好把握,特别是实习的机会比较重要,找到一个好的实习可以为秋招的简历增色不少(特别是bat实习的转正率都会很高,可以避免秋招更激烈的竞争),如果对自己的基础知识不自信的同学,一定要提前准备,努力了都会有一个让自己满意的结果。
2.2、准备
对于一名本科生来说,如何准备笔试和面试是最棘手的,因为笔试、面试不像是某一门学科的考试,面试往往考察的是你的一个综合能力,但对于技术类面试来说,其实面试的考察还是比较有针对性的,按照以往的经验来说,准备可以从两个方面来准备:基础知识和岗位方向准备。
2.2.1、面试刷题
基础知识不是别的,就是课本知识:操作系统、数据结构、数据库、计算机网络、常见算法等,这是基本上每个面试官或多或少都会提及的,并且一定要记住,你项目做得再多,基础知识不掌握好肯定不行。
对于基础知识的掌握最好可以去看一看相关面经,因为和考试不同,考试往往是一套比较成熟的试题,而面试对于基础知识的掌握往往在原理上,比如操作系统期末考试的考察往往是通过题目,而面试官往往会问你:和我说一说虚拟内存是如何在操作系统中实现的,这时你就要通过画图、口语表述的方式把这个原理说清楚,和做题的区别还是较大的。这里我给大家整理了一些大厂面试真题(含解析)免去了大家在网络上找面经的时间,这些大厂面试题其实大部分都是重合的,所以说对于你复习有很大的好处,并且往往也能给你复习找一个方向。
我从基础-中级-高级开始一步一步逐步深入,这些面试问题一样都有分类整理
比如基础部分:生命周期,Context,动画…
中级部分:HashMap,Kotlin,HTTP,Flutter…
高级部分:性能优化,Android Framework,Android优秀三方库源码,热修复、插件化、模块化、组件化、Gradle…
对于基础知识的复习,不同岗位方向的重点也不一样,这也是我们需要注意的,举个例子,Java后台方向的基础知识可能更加侧重于Java、JVM、数据库等内容,Android方向的基础知识可能侧重于Java、操作系统等等,大家在复习的时候也需要进行相应的针对性的复习。
2.2.2、岗位方向知识
岗位方向知识就是与你所投递的岗位相关的知识,并且它和简历内容是紧密结合在一起的,因为面试官不会孤立地去问你问题,而是通过简历上的内容进行提问,这也要说到我们常见的一个误区,就是大学生项目一定要做精、做深入而不是做多,特别是对于你岗位方向的知识进行一个深入的了解而不是只停留在表面。因为对于面试官来说,大学生项目只不过是小孩子过家家(针对绝大多数普通本科生来说),他肯定不会对项目有特别大的兴趣,而是希望看到你在这个项目或者说实践中的学习能力、解决问题的能力的体现。
举个例子,针对安卓方向,也就是我面试的时候选择的方向来说,很多同学学习安卓有很多或大或小的Demo和App,可能使用了很多市面上很流行的框架,比如Retrofit、RxJava,但面试官往往会问,你有没有深入了解过Retrofit?有没有了解过它的实现?又比如对于安卓这个方向来说,面试官往往会问你Android触摸机制的实现你有没有了解过?这些都是常见的Android端面试问题,往往就考察了我们学习的深入程度,所以我才说同学们在做项目的过程中,可能你的项目不是很大,只是个个人作品,但你一定要在学习和做项目的过程中进行深入的学习和探索,比如可以对项目中使用到的框架啊的源码进行学习和总结,往往了解的越深入,越能让你在众多求职者中脱颖而出。
对于不同方向的准备,这里我也建议大家上网搜集一些相关岗位的面经(前面提到的牛客上资料很丰富,也有很多网站上也有相关资料),对于其他方向我也没有什么经验,Android方向的同学可以参考我自己在牛客上发的贴,其实多搜索搜索,基本上都有很多相关资料。
最后强调一下,一定不要陷入我一定要做项目的误区,哪怕你项目很少,只要你在某个领域了解的很深入,比如C++、数据库、JVM这些大家耳熟能详的东西,不怕找不到好的工作,所以自己在平时的学习中一定要多钻研多了解一些深入的东西。
2.3、方向
这也是很多同学会疑惑的问题,感觉自己什么都好像挺喜欢,而岗位方向却很多(常见方向可以参见bat招聘方向),这里对于方向的选择我不发表看法(和个人兴趣强相关),但一定要尽早定下自己的方向,因为不论什么方向,你只要掌握的够深入、够好,找工作不成问题,就拿我身边的同学,进腾讯有做前端的、C++后台的、C++客户端的、Android的、IOS的等等,甚至有个牛人拿到了阿里的机器学习offer(这在本科生中之前都认为非常难),所以不论什么方向,一定要尽早确定下来。当然大一和大二的同学可能还没有必要,什么方向感兴趣就去学一学,充分试错,找到最适合自己的方向。大三的同学建议就认准自己的方向进行学习和准备,避免没有一个深入的方向,到时候招聘会比较麻烦,因为毕竟招聘对于广度的要求没有那么高。
2.4、面试经验
自从实习招聘以来,大大小小的面试可能有40+,对于面试也算积累了一定的经验,不一定适用于 每一个同学,大家可以当作一个参考。
-
好的准备是第一步:对于任何一场面试,一定要认真对待和准备,比如当时我们面试前都会把常见排序手写一遍(虽然我没被问到,只是举个例子),千万不要凭运气去面试,提前准备是成功的必要条件。
-
面试过程中的表达能力很重要:往往面试官一个问题你可能知道,但如何清晰的表述这个问题自己的看法是关键,尽量在大脑中简单构思一下(如果觉得尴尬就说自己太紧张了,思考一下),然后按点来说;另外对于原理性的问题,借助纸笔来表达也是一个好方法,这点在准备的时候也可以进行,对于一个知识点使用画图的方式来理解。我自己在面试中成功率较高的很大原因我觉得并不是实力,而是表达能力较强。
-
保持自信和谦虚,不懂的问题实话实说:面试不光是对你知识的考察,很多时候还会考察一些别的因素,比如思维能力、团队合作意识等等,所以尽量放开了说,保持自信,尽量多和面试官交流。比如面试官问一个问题你觉得比较模糊或者不太理解,就直接和面试官说明,多和面试官交流是没错的。另外如果问到一个确实不了解的问题,实话实说,切记不要在专业知识上撒谎,如果被面试官发现了会很不利,因为抛开专业知识不谈,诚信永远是企业选人的第一标准。
-
保持良好的心态,学会接受失败:最后这点是最重要的,在学习、招聘面试的过程中,一定要保持一个良好的心态。因为在面试的过程中,特别是一开始面试经验较少,紧张、焦虑、发挥失常等等情况是难免的,所以说面试不过是一个非常非常正常的现象,一定要能接受自己的失败,当你能够接受失败之后,慢慢的积累面试的技巧和经验,你会发现面试实际上并不难。我认识的人中,有面试了7次才进腾讯的(真人真事),有实习去美图没留下来反而秋招进了腾讯的,特别是大三下开始的那一年,你会经历准备、春招面试、实习、秋招面试等等一系列的事,你还要做很多选择,所以一定要能够保持一个良好的心态!当你坚持下来,你才会发现其实并不难。
学习分享
在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021最新上万页的大厂面试真题
七大模块学习资料:如NDK模块开发、Android框架体系架构…
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
这份体系学习笔记,适应人群:
**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。
**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。
**第三,**到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。
发几年,不知道如何进阶更进一步,比较迷茫。
**第三,**到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。