开篇以前,首先说一下,大神就别点进来了。博主只是尘世间一个迷途小开发,二流程序员。
这篇文章并不像其余面经同样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+总结,最终拿到了本身喜欢公司offer(非一线大厂,可是薪资也涨了40%多,对我来讲已经很满意惹)的故事。
固然,大厂谁不想去呢?但是时间紧,生活压力大,计划赶不上变化。生活的真谛就是妥协而已。java
出来社会摸爬滚打三年多,不得不认可人是分三六九等的。即使是专一度、努力这些颇为客观的因素,也是因人而异的。(没办法,我也知道客观上应该努力啊555~~,可我主观上只想躺着刷B站~~555)
First,先列一下博主目前的客观状况:程序员
我是从8月接近中旬开始面试的,一直到9月初结束,整个面试周期满打满算有一个月的时间(我是至关于裸辞找工做的)。此次面试采用的策略是以战代练,就是边面边复习。面试的话,主要是朋友内推,Boss和拉勾。但Boss的话,初期不建议把简历可见,我就在这方面吃了苦头(别提了都是泪)。
接下来我将这一个月内我接触的知识点铺展开来,也给你们一点参考。
书籍:《Android开发艺术探索》、《Android进阶之光》、《Android进阶解密》、《图解Http》面试
书是不能不看的,以上这几本,除了图解Http以外,都要大体读一遍。固然时间可能没那么充裕,因此要跟着目录,挑一些本身的弱项好好复习一下。
Http这本书是由于有几家公司面试问到了网络相关的知识,因此我才去阅读的算法
算法:LeetCode,把链表、排序、树标签里全部简单类型的题目练一下手。特别是排序,冒泡、快速、二分、选择、归并必定要达到手写的水平!canvas
数据结构:Java的HashMap——7和8的区别、ArrayList、LinkeList。Android的ArrayMap、SparseArray系列。还有阻塞队列ArrayBlockingQueue、LinkedBlockingQueue。HashMap的结构和细节是遇到最多,建议仔细看一下源码,必定要有本身的理解(划重点)。把HashMap如何存储、如何查找。hash碰撞,以及内存利用率这些问题理解一下
设计模式
设计模式和架构:准备一些本身拿手的模式,在网上查一下资料。准备一些套话,关键词耦合
,二次修改方便
,外部不用关心内部实现
等等。MVC、MVP、MVVM三种,起码要了解两种,而且能清晰明确的说出,两种架构间的优缺点。数组
我自己经历过一次MVC -> MVP的过渡,因此面试的时候就只提了这两种。MVVM没接触过,就实话实说没搞过,面试官也不会再问。千万不要打肿脸充胖子,没接触过就说不会就能够了。
关键词:UI逻辑
、业务逻辑
、不影响对方的前提下修改
、逻辑清晰,方便定位
缓存
简历:这个就8用提了,面试的敲门砖。个人简历也写的不是很好,但由于会一点音视频的知识,因此仍是有一点加分项的。简历要注意简洁明了,star法则;诸如:我作了A工做,将效率提升200%、我优化了xxx,把速度优化了10~20倍。1 ~ 2页最佳性能优化
最开始写简历的时候,实在不知道该如何动笔。磨磨蹭蹭憋了好几天没整出来。其实这个时候就要平心静气,把本身的思惟拔高一点。站在整个项目的角度去细细查看,这个时候就会发现项目中仍是有很多亮点的。网络
Android基础:这个就很重要了,固然涉及面也至关广。四大组件,生命周期这个啥都不说了,直接冲就是了,基本都会问到
。Handler、View绘制流程、事件分发,这些都是老生常谈。
Android框架基础:AMS,Activity的启动过程。Android绘制流程(这个看我的了,由于我简历上写了熟悉Canvas哭,手动狗头
)
Java基础:多线程、线程池、锁机制,这两个知识点问到的还挺多的。其余的包括,内存区域、内存泄漏、垃圾回收。。。(这些懂个概念便可,不深究)
以上是一些复习的知识点,由于要准备的东西仍是蛮多的。因此时间上的安排必定要灵活,我是早上复习Java基础,中午看Android,晚上复习算法和数据结构。有面试的话,就提早去了解一下公司的产品,去官网上冲一冲浪,下个APP玩一下。也算提早给本身一个心理准备。
如下是一些面试题,供给你们参考:
这是一个比较泛的问题,主要从布局分析、绘制分析、内存优化几个大的方面去延伸,如何定位、如何解决,说出本身的理解和经验便可
由于本身说秃噜嘴了,提了一句死锁。就被问到了555,好惨。因此千万别装,不会就别提
同窗们,这道题基本必问。敲黑板!
硬绘和软绘
考验你的综合能力
网络我基本只知道一些概念
好了,以上就是遇到的一些问题。还有些问题涉及到音视频这方面,由于不具备通用性,我就不提了。
仍是那句老话,面试是一个双向考察的过程,面试官考察你,同时你也要考察考察公司。要真是不喜欢的话,工做作得也不开心,固然也不会长久。工做毕竟仍是占据了生活中的大部分时间,找一个本身喜欢并愿意投入的工做对本身的成长也好一点。
同时,面试也是一个考察综合能力的地方。不要觉得技术上准备的很充分了就万事大吉。在面试的时候,态度、分析问题的能力、自信度、人品这些都决定了你可否拿到offer。
面试通常的时间是在两三个小时左右,做为求职者。咱们要在这段时间内,将咱们的价值展示给面试官和HR。就像推销产品同样,你得站在旁观者的角度思考一下,这我的值不值得咱们买入(发offer),他(她)的性格怎么样,人品值得信任吗等等。
站在这个角度想一下的话,有不少问题你本身就想通了。固然你考虑这些问题的前提是你的技术准备已经挺充分的了。
工做上偏重架构设计
,技术上偏重技术实现(实现了什么牛逼的技术)
做思考状(手动狗头)
,若是是特别特别熟的问题,就稍微顿一下,不要太流利。有些点能够适度说想不起来这个程度本身把握,挑一些不过重要的点
,留给面试官补充,否则你各个问题回答如流,只会加速面试流程。说不定碰到一个轴一点的,就抛出一个史诗大问题给你。固然这个小技巧面试用一次就最多了,千万别乱用。。。这我的很浮躁,不会在咱们这里久留
的印象就行了。2019的面试总结下来,比前两年要难上许多固然大厂仍是一如既往的难~~~
。现在的面试官经验也丰富不少,不少问题并不会直接问你,而是抛出一个具体的问题由你去分析。有的仍是考察你在产品和开发之间的项目协调问题,好比出了一个客观上没法解决的问题,你该如何去协调。还好比会考察你一些对产品的思考。
现现在而言,工程师尤为是Android工程师是远不如前两年火爆了。如今更考察的是一个工程师的综合能力,你的基础、交流能力、问题组织能力、有没有过对产品的思考。
攻城狮!时代在进步,工程师们也要进步,不只仅是技术。工程师更是一个综合能力的结合,涉及到演技,口才,交流能力,技术基础,产品思惟等等~~