2021 年 Android 网络编程总结篇,retrofit 面试
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 次才进腾讯的(真人真事),有实习去美图没留下来反而秋招进了腾讯的,特别是大三下开始的那一年,你会经历准备、春招面试、实习、秋招面试等等一系列的事,你还要做很多选择,所以一定要能够保持一个良好的心态!当你坚持下来,你才会发现其实并不难。
建议
当我们出去找工作,或者准备找工作的时候,我们一定要想,我面试的目标是什么,我自己的技术栈有哪些,近期能掌握的有哪些,我的哪些短板 ,列出来,有计划的去完成,别看前两天掘金一些大佬在驳来驳去 ,他们的观点是他们的,不要因为他们的观点,膨胀了自己,影响自己的学习节奏。基础很大程度决定你自己技术层次的厚度,你再熟练框架也好,也会比你便宜的,性价比高的替代,很现实的问题但也要有危机意识,当我们年级大了,有哪些亮点,与比我们经历更旺盛的年轻小工程师,竞争。
开源分享:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!!!!!!!
准备想说怎么样写简历,想象算了,我觉得,技术就是你最好的简历
我希望每一个努力生活的 it 工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
有什么问题想交流,欢迎给我私信,欢迎评论
【附】相关架构及资料
内含往期 Android 高级架构资料、源码、笔记、视频。高级 UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter 全方面的 Android 进阶实践技术
评论