不少小伙伴还是在公众号私信问我上周怎么突然没有日更了,我也有在公众号中答应大家后面会给回复。好啦,现在还是简单说一下吧。
过去的一周中,我主要是出去找工作去啦~过去的一周,面了 4 家公司,从小到大都有,最终斩获了 3 个 offer。在经历了一番内心挣扎之后,我于周二上午决心选择了福利待遇相对较差一些的咕咚。
主要还是因为咕咚的面试官给我的印象非常深刻,我很高兴能够加入一家技术氛围如此淳厚的厂子。
所以,从此以后,你们可爱的南尘除了是一名致学人,还将成为一名咕咚范儿啦!!!
相对较大的公司的话,面试题可能更加具有一定的参考性,所以南尘就姑且把上周面试的咕咚和美团面试题分享给大家,可能不全,有些问题可能忘了。
咕咚
一面(Android Leader)
-
请举出你认为你在工作中挑战最大的事例;
-
RecyclerView 一个适配器如何适配多种布局,不考虑根据不同 Type 设置不同 ViewHolder;
-
用过数据库么?如何防止数据库读写死锁?
可以考虑采用 ContentProvider && 单例实现。
-
CardView 真的好么?除了 CardView 还能用什么方式实现圆角等?假设我们有上千个 Shape 文件,如何维护?
-
了解过 MVVM 么?它和 MVP 有什么差距?
-
是否用过 DataBinding?ButterKnife 是怎么做到布局绑定的?
-
使用过什么图片加载库,Glide 的源码设计哪里很微妙?
-
知道 Linux 的线程间通信么? Android 为啥会采用 Binder?Binder 的机制又是怎样的?
-
讲讲 AIDL。
-
如何能保证随时随地都能拿到一个 Activity 的当前生命周期?
-
会用 Kotlin 么?
可见 Kotlin 自从成为了谷歌首推语言后,确实还挺重要的,必须学习一下了。
-
Android 7.0 都适配了什么?
-
你还有什么想问我的?
二面(移动端 Leader)
-
讲讲 HTTPS 是怎么做加密的?讲讲非对称加密算法。
-
Android 8.0 都有些什么新特性?
-
画中画;
-
自适应 icon;
-
WebView 增强;
-
通知分类别,增加圆点,通知延后,通知增加背景,同样增加历史,通知超时自动清除;
-
自动填充信息(类似浏览器的选择保存的账号密码功能)
-
后台执行增加限制(主要是服务和广播);
-
蓝牙提升。支持蓝牙低功耗 5.0 标准;
-
智能文本选择与智能共享;
-
WLAN 感知;
-
取消屏幕纵横比限制;
-
多显示器支持;
-
可下载字体、XML 定义字体;
-
自适应 TextView,统一布局边框;
-
更丰富的色彩管理功能;
-
可以声明应用类别。
-
-
使用过 Gradle 的哪些功能。
-
RecyclerView 滑动卡顿,请分析原因,并提供解决方案。TraceView 都能看到哪些成分?
-
操作系统里面的一个「虚拟内存」是指的什么?
虚拟内存指的是一个对内存和外存进行调度,只是从逻辑上扩充了内存,但实际上不存在的内存存储器。
原理是:基于局部性原理,在程序装入的时候,可以将程序的一部分装入内存,而在其余部分留在外存,就可启动程序执行;在程序执行时,当所访问的信息不在内存的时候,由操作系统所需要的部分调入内存,然后继续执行程序;操作系统再将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。
-
Android 是如何做的性能调优?
-
讲讲适配器模式中适配器是干嘛的?在开发中都在哪里有用到?
-
都用过哪些开源库?
-
会用 KotLin 么?
-
你还有什么想问我的?
三面:技术总监
-
为什么大多数 API 会选择短连接而不是长连接?
-
为什么会选择用 RxJava?
-
MVVM 模式到底有什么好处?
-
详细讲讲 Android 8.0 新特性。
-
Kotlin 学习的怎么样了?
-
你的职业规划是怎么样的?
-
你有什么想问我的?
四面:HR
-
你目前是在职还是已经离职?
-
你为什么离职?
-
对咕咚 APP 的了解?
-
你是一个自律的人么?
-
你的职业规划是怎么样的?
五面:CT0
-
先做个自我介绍。
-
你在原来公司发展挺好的,但你为什么离职?
-
你们的 APP 采用蓝牙协议了么?
美团
一面(Android 技术)
-
讲讲你工作开发的项目是干嘛的。
-
手写快排;
-
手写二分查找,并分析时间复杂度;
-
讲讲 APK 是如何做瘦身的?
-
说说你项目中挑战最大的一件事。
-
讲讲 HTTPS 是如何做加密的,说下非对称加密算法;
-
说一下 HTTP 协议请求头我们常用的 3 个字段;
-
讲讲你这个图片压缩库是怎么做的?
-
进程保活怎么做?进程拉活现在还可以做么?
-
用过线程池么?讲讲 AsyncTask 的原理。
-
讲讲 HashMap 的原理。
-
讲讲 Android 如何做性能调优?
-
你们是如何做 UI 的机型适配的?
-
讲讲你们的多渠道打包是怎么做的?
-
bugly 是干嘛用的?Handler 怎么处理内存泄漏,除了使用弱引用。你还知道哪些地方需要注意内存泄漏?
-
Bitmap 使用需要注意哪些问题?Bitmap.recycle() 会立即回收么?什么时候会回收?如果没有地方使用这个 Bitmap,为什么垃圾回收不会直接回收它?
-
如何存储一个大图,但显示在 UI 上的是小图。
-
官方为什么会把 HttpClient 和 HttpUrlConnection 替换为 OkHttp 默认实现?它有什么好处?
-
你的 GitHub 上都开源了些什么东西?都为哪些开源库贡献了源码?ImagePicker 为啥会出现有些图片拿不到?
-
了解二叉树的遍历么?讲一讲他们。
-
讲讲 SVN 和 Git 的差别,Git 的优势是什么。
-
讲讲 MVVM,主要是为了解决 MVP 和 MVC 的什么问题?
-
equals() 和 hashCode() 的区别是什么?平时有重写过它们么?什么情况下会去重写。
-
讲下为什么在 Android 下推荐使用 ArrayMap,相比 HashMap 它到底有什么优势?
说些其他的
我知道你会问我答案,实际上在互联网发达的今天,大概你是可以寻找到了。其实技术面试有时候并没有标准答案,很多时候就是一个互相交流的过程而已。
直到现在,美团一面过去快一周了,依然还没有得到传说中的复试通知,深感难受,不过目前都不重要了,还好有了心仪的咕咚最终的认可,也算满足啦。
不瞒你说,我对咕咚一直掺杂了很深厚的感情,能开发心爱的人常用的 APP,其实这本身就挺自豪的。