2020资本寒冬下 Android面试者,大厂必凉面经(为春招准
我的惨痛经历
在2019年10月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真是战战兢兢,被打击得信心全无.记录下我的面试经历,分享给需要的人.勉励自己要时时进步,才不会被淘汰.
经验分享
后来的我面了很多公司,最终拿下了知乎、网易和快手的offer,最后选择了知乎。有人可能会问为什么不选择快手?的确快手的工资很高,福利待遇也很好。不过我觉得目前我还是应该更以技术成长为主。
在与知乎的面试官交流时,发现他们的技术相对来说更新颖一些,包括Kotlin、Flutter和Jetpack,都有一些实践,也都是我想学习的东西,这边的业务也更感兴趣一些。
另外,在谈offer时也被他们满满的诚意打动了。还有,建议大家工作未满3年时还是更以技术成长为主,不要把薪资放在首位。
面试准备(新手注意避坑)
1. 简历
简历不用准备得太花哨,以前我总喜欢找一些漂亮的模板,后来经人指点后改成了用Markdown书写。面试官不在意你的简历有多好看,他更在意的是你的简历内容。
2. 面试
写完简历就可以投递了,一般可以找朋友内推或拉钩网、Boss直聘直接投递,这样比较快一些。
2.1 技术面试
技术面试一般会先做个自我介绍,然后问问你做的项目,考察一下基础,之后再写个算法,最后可能问问你有什么想问的么。
- 2.1.1 自我介绍
自我介绍一般主要说一下你在哪就职,目前的工作情况,工作经验有多久,都做过哪些东西,尤其要突出一下你的亮点。这个大家提前准备一下就好。
- 2.1.2 项目经历
自我介绍完之后,面试官就会看你的工作经历,挑一些问你,或者直接让你介绍做过的最好的东西。
大家写到工作经历的东西,负责的部分一定要特别熟,经得起面试官的拷问,如果只是参与的,也要尽量弄熟,否则就不要往上写。
每个人的经历不同,做过的东西都不一样,所以我就不给大家整理了。
一般的面试安排都是3轮技术面和1轮HR面,部分公司可能会有增减。
- 2.1.3 基础
问完项目,就该考察考察候选人的基础了,一般包括Android基础、Java基础、Android常用的开源框架、设计模式和网络基础等等。
[图片上传中...(image.png-cbf285-1608106699619-0)]
面试篇
饿了么(无笔试)
- 设计的六大原则
- 如果hashmap key不一样,但是hashcode一样会怎么样?
- okhttp有什么优秀的设计模式?builder模式有什么好处?责任链模式有什么好处?
- 懒汉模式单例为什么加volaitle?
- hashmap是否线程安全?不安全会出什么问题?
- concurrenthashmap读写分别是啥情况?
- bindservice和startservice生命周期有啥不同?
- 广播有几种?广播是观察者模式?跨进城广播也是观察者模式吗?
- ams是怎么找到启动的那个activity的?
- a-b-c界面,其中b是singleinstance的,那么c界面点back返回a界面,为什么?怎么管理栈的?
- 红黑树有啥特性?
- 在oncreate里面可以得到view的宽高吗?
- view的getwidth和getmesurewidth有啥区别?
- 遍历hashmap的原理?
- 23种设计模式
知乎
知乎面试前hr会事先跟你电话确定面试时间,然后把你的Skype账号给hr,到时候面试官会加你好友,然后开始面试。知乎的招聘信息在这里
一面:
- 自我介绍
- 介绍一下自己做过什么项目ps:这里会根据项目问一些问题
- 跨线程通信 主要涉及LooperMessageHandler以及MessageQueue
- 说一下自定义View需要注意哪些细节 主要说了一下View绘制的三大过程onDraw()不要做耗时操作 不要创建新对象 以及 怎么处理View的触摸事件
- View的事件冲突的解决办法 ps:重写dispatchEvent()或者touch()方法
- 手写代码:给你一个无限大的数(用字符串表示),计算这个数加一以后的结果 手写代码在这个网站进行 ps:面试官发给你一个链接 你写代码面试官会同步看到
二面
- 手写代码 两个有序链表合并成一个有序链表
- Object中有哪些公有方法 ps:clone();toString();wait();notify();getClass();finalize();equals();hashCode();
- 讲一下listView的优化方法
- 讲一下RecycleView与listview的区别
- view的绘制过程
阿里
- 问了一下大体情况 比如什么时候可以实习啊 考不考研啊
- 都会什么算法 讲一下
- 做过什么项目没有 讲一下项目优化的地方
- Activity的启动模式
- 跨线程通信
- 夸进程通信 主要是Android的AIDL
- 如何解析json数据和xml
蘑菇街
- 说说做了什么项目
- 自定义view的几个步骤 怎么刷新view ps:onLayout(); onMeasrue();onDraw();
- RecycleView的优化
- 几种context的区别
- 看过什么源码没有
- 讲一下binder类
- Runnable运行在哪个线程里面 ps:开启一个子线程的唯一方法就是new Thread().start();
- HashMap和HashTable的区别
- raw和assets文件夹的区别
- activity关闭后尚未运行完毕的thread会怎么样 ps:会变成空进程线程,优先级最低 很容易被终止回收
- mainfest文件的合并规则
网易
网易内推后笔试,过了笔试后去杭州面试 ps:报销来回车费 报销上限是600元 这个回来没记 可能不全
一面:
- 自我介绍
- 跨线程通信
- 讲了其中一个项目是怎么实现的 问jsoup怎么拼 = =
- 用过哪些开源库 讲一下他的架构是怎样的
- java的四种引用 虚引用的作用
- 图片三级缓存 内存缓存满了怎么办 ps:优先级队列 满了后根据优先级主动删除一部分图片 根据LRU算法确定优先级
- 讲一下JNI开发的过程 java怎么找到c函数
- 平时有什么爱好没有 = = ps:潜泳 可以潜好几天 然后自己浮上来
二面:
- activity的四中启动模式
- service的生命周期
- 讲一下自己的项目
- 什么是OAuth协议 做什么的
- 其他的记不清楚了
hr面:
- 什么时候可以来实习 实习多久
- 多个offer怎么选
- 你有团队开发经验 内部冲突怎么解决
- 你觉得杭州怎么样
- 为什么选择网易
- 用过网易什么产品 ps:吃过网易猪肉
- 其他忘记 好像聊了好久 得一个小时吧
字节跳动(无笔试)
- dvm和art的区别
- 从framework的角度讲activity的启动流程(冷启动)
- 手写算法,二维数组,每一行,每一列都是升序,找出某数的下标,没有输出[-1,-1],最好的时间复杂度是m+n(行数+列数)
- zxing二维码开源框架流程
- contentprovider怎么升级维护?
- constaintlayout
- bitmap有几种格式,分别占多少字节
滴滴出行(无笔试)
- android事件分发机制,如何下发,如何上传?
- 一个界面下拉刷新要怎么实现?
- bitmap占用内存多少怎么计算?一个像素占几个字节?
- threadlocal的原理?
- framework加载activity的流程
- arraylist和linkedlist的应用场景
- 网络请求相关的框架
- 好几万条短信,滑动卡顿怎么解决?
- 有没有了解过三方开源数据库(好像是腾讯的什么数据库框架,不仅仅是懂sqlite)
- 避免内存泄漏,为什么说handler用成员内部类会内存泄漏?activity不是已经到gcroot被切断了吗?还有静态context持有activity的引用会内存泄漏,必须要持有怎么办?(及时释放)
- 计算viewgroup的层级,递归实现和非递归实现
- 自己写一个应用,包名就叫android行不行,为什么?
- 主线程looper如果没有消息,就会阻塞在那,为什么不回anr?
- 系统进程可以用webview吗?
- 原子类的了解一个app多进程的好处
- 一个arraylist,里面全部是int,讲所有值是2的整数的节点删除
- arraymap了解
- binder机制
- shareprefrence原理?是否线程安全和进程安全?
- 一个app启动页另开一个进程,启动页10s后启动mainactivity,请问5s的时候有几个进程?
- java内存结构,内存模型
京东
- arraylist里面可以不可以new一个t泛型的数组?
- 补间动画click事件还在原位怎么解决?
- 多线程并发
- 隔代数据库升级
- 性能优化
文章不易,如果大家喜欢这篇文章,或者对你有帮助希望大家多多点赞,转发,关注哦。文章会持续更新的。绝对干货!!!
大厂面筋资源分享(需要的领取不需要的跳过就好)
387+755+791=1953页的3份高质量《大厂面试宝典》合集
面试前准备(387页PDF)
Android大厂面试题集2020版(包含答案整理)第一部分(755页PDF)
Android大厂面试题集2020版(包含答案整理)第二部分(791页PDF)
-
自行下载直达领取链接:【点击资料下载】