在互联网做了几年之后,去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好,更重要的是,它是对你专业能力的背书,大厂工作背景多少会给你的简历增加几分竞争力。
但说实话,想进大厂还真没那么容易。我的一个朋友在入职腾讯之前,大大小小的面试经历了十几次,最后终于在 3轮技术面+1 轮 HR 面之后成功接到 Offer,40k*16 薪!
一面:
- 算法题:123 -> 321 超出Integer最大值范围,正负数怎么处理
- hashmap put()底层原理,发生冲突时,如何去添加(顺着链表去遍历,挨个比较key值是否一致,如果一致,就覆盖替换,不一致遍历结束后,插入该位置)
- Handler内存泄漏与Looper
- Message为什么没有被回收
- 手写单例模式,volatile作用 ,为什么要双重判空,作用是什么,一句话概括
- 为什么要泛型擦除,写一个泛型方法和一个泛型类
- 一张图片加载到内存,如何计算图片占用内存的大小,ARGB8888与ARGB565有什么区别
- APK打包流程
- 四种引用方式,他们之间的区别,什么时候用到弱引用
二面:
- 线程池线程是如何保持线程不被回收的?在for循环里一直循环,循环体内会有take方法阻塞?
- 线程可以多次调用start吗? 会出现什么问题? 为什么不能多次调用start?
- RecyclerView是怎么优化的
- MVP是如何实现的,他们之间的关系和职责
- MVVM是如何实现的? ViewModel的底层原理
- 热修复框架底层的原理,Tinker,美团的
- pid与uid的区别
- 你们的项目架构是怎样的?
- 线程IO密集型和CPU密集型区别及线程数的设置
三面:
- 简单自我介绍
- 项目结构,用到了哪些技术?
- 过往经历
- 为什么想换工作?
- 最近看的项目,用的什么技术?
如何快速搞定Android面试,总体上做好以下三点即可:
- 简历准备
- 核心技术及面试题
- 面试技巧
简历准备
首先你要准备的是简历。简历很重要,这是别人了解你的第一个地方,所以简历要好好写。
- 自我简介: 用最简单的话来说明自己的情况,不超过200字。
- 个人技能: 让对方了解你掌握的技术和熟悉的领域。
- 经验和软技能: 带过多少人的团队、有多少年的项目管理经验、学习能力如何、执行力怎么样、设计过什么样的系统。(不要太多,几句话就好)
- 工作经历: 不要列一大堆项目,挑重要的,主要突出项目的难度(技术点)、规模(用户量、并发量、吞吐量)、挑战(高可用、技术瓶颈及突破)、职责(项目经历/核心开发)等。
同时面试也没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。之前我是看的Github上的一个Android进阶知识笔记,很全面,如果你也有需要可以去查看,点击查看Github地址