时间来到了2019年的11、12月之交,两个月没有更新博客了,这段时间经历了很多事情,而随之面临的紧迫任务就是重新找工作了。时间紧,任务重!两周共面试了15家公司。公司有大也有小,这篇文章主要分享下这些公司的面试题及面试感受。
在面试之前就想着先去一些小公司面试,丰富面试经验了再去大公司,所以把几个内推大厂的机会都推迟了一周。
MetaApp
- 上机完成一个图片加载App,尽量考虑性能优化。
- 做完才能继续后面的面试。
第一个面试,基本没有准备,不是很喜欢这种上机做一整个App的,感觉比较浪费时间。后面没有做完问能不能继续聊聊,hr给的答复是只有做完了才能进行后面的面试,我直接放弃了,感觉这样的规定会错过很多厉害的人,另外公司环境和几年前的网吧没什么区别。
公司规模:★★☆☆☆
办公环境:★☆☆☆☆
技术氛围:★★★★☆
车主帮
- 手画项目中MVVM的每一层架构图。
- 讲讲Binder。
- Lanucher启动App流程.
- 热修复原理。
- RxJava内部实现原理。
- Retrofit实现原理。
- 平衡二叉树和完全二叉树的区别。
依旧是没怎么准备,回答的不是很好,不过面试官还是很nice,把要复习的东西都给我列了一遍,真的是感谢。
公司规模:★★☆☆☆
办公环境:★★★☆☆
技术氛围:★★★☆☆
Opay
- 数组、链表、二叉树的特点,及插入、查找和删除的复杂度。
- LRU算法的具体实现
- ArrayList数据结构是什么样的,是否线程安全。
- 线程安全的数据结构有哪些?
- SpraseArray 实现原理。
- Kotlin中val和var的区别,kt单例如何实现,lateinit和by lazy的区别。
- Recyclerview和Listview的区别,如何获取当前屏幕第一个显示item的位置。
- Android如何开启多进程,多进程环境下Application是否会再次初始化。
- 数据库多线程操作会不会有问题?
- 空心圆如何绘制?
- 创建observer有哪些操作符?
- Livedata的数据拷贝。
- Jvm是如何分区的?
- 讲讲GC垃圾回收算法。
- handler的实现机制,子线程中如何使用handler, postdelay是如何实现的。
- ConstrantLayout三个button如何平分,ConstrantLayout中如何同时隐藏多个控件。
- Jetpack 熟悉吗?都用过哪些。
- 什么情况会出现栈溢出?
- 如何直接使用arr文件中的方法,而不初始化。
一共三轮面试,面试官的问题都比较偏向于实际开发,公司在扩大规模,主要做非洲支付的业务。这次面试感觉比前两次好。
公司规模:★★★☆☆
办公环境:★★★☆☆
技术氛围:★★★★☆
梧桐车联
- 哪些方式可以让Activity执行finish方法。
- Activity A打开B的生命周期流程。
- onServiceConnected的回调时机。
- 子线程代码块中的打印语句和子线程下方主线程的打印语句执行顺序。
- Long类型的比较。
- 讲讲String、StringBuffer、StringBuilder的不同。
- Java访问修饰符各自的访问范围。
- 什么是多态?
- Equals 和 == 的区别。
- 手写二分查找。
- 手写字符串去重后打印。
- 字符串中只有一个字符只出现了一次,如何快速找到这字符。
- 抽象类必须要有抽象方法吗,抽象类和接口有什么区别?
- Stackoverflow什么情况会出现?
- 获取屏幕像素大小的方法是什么?
腾讯投资的一家公司,在中关村,因为把期望工资写在了简历上,一面面试官一上来什么问题都没问,直接和我说,就算你面试全部通过了,你写的期望薪资也给不到。然后整个面试氛围就不对了,最关键的是二分查找,我写的是通过移位来计算除以2,结果面试官应是没看懂,还让我给他解释…
公司规模:★★★☆☆
办公环境:★★★★☆
技术氛围:★★★☆☆
多点科技
- MVVM的解读,对比MVC有哪些好处,为什么不用MVP?
- 用队列实现的有哪些数据结构?
- HashMap线程安全吗,如果多线程操作会有什么问题?
- SparseArray的优点,是如何实现的?
- Handler先Postdelay一个消息后,立刻sendmessage,此时是如何处理的?
- Invalidate、postinvalidate、requestlayout 的区别。
- Rxjava中map、flatmap、zip操作符的实现原理,异常是如何处理的?
- Glide缓存机制,是如何实现生命周期的?
- Livedata是如何感知生命周期的?
- Threadlocal的作用及实现原理。
- 讲讲Jvm内存分配和GC过程。
- NestedScrollView的实现机制,吸顶效果是如何实现的?
一家中小型公司,面试官都比较负责,问到了很多知识盲点,公司是单独一栋楼,环境还可以,看起来加班不多。
公司规模:★★☆☆☆
办公环境:★★★★☆
技术氛围:★★★☆☆
寺库
- 具体讲讲动态代理。
- AsyncTsak的实现原理。
- 多态是什么?
- 内存优化都做了哪些?
- 类变量和成员变量有什么区别吗?
- 生产者消费者手写代码。
- 工厂模式在哪些地方有应用。
- Java中Object类有哪些方法?
- 具体讲讲JVM的分区。
- Java限定修饰符有哪些,修饰范围如何?
这家公司在三里屯附近,面试官比较耐心,环境还不错。
公司规模:★★★★☆
办公环境:★★★★☆
技术氛围:★★☆☆☆
贝壳
- 线程池中有哪几个变量,分别是干什么用的?
- 如何直接定位到ListView最后一个。
- Activity A打开B的生命周期,介绍四种启动模式。
- 吸顶代码如何实现。
- 项目中有哪些你觉得是做的有亮点的?
- Flutter混合开发中闪屏是如何解决的?
- Glide、Okhttp实现原理。
- ActivityThread、ApplicationThread的区别。
- Handler和ThreadHandler的区别。
- 讲讲View绘制流程、事件分发机制。
- 性能优化都做了哪些方面。
- https是如何实现的。
- 锁分为哪些类型,分别有什么特点?
- sleep和wait的区别?
公司环境还可以,面试官也还行。
公司规模:★★★★★
办公环境:★★★★☆
技术氛围:★★★☆☆
完美世界
- 手写两数相加,实现两个链表存储每个数字,然后相加后输出。
- 内存调优做了哪些?
- 你觉得你之前做过的哪些地方能给我们公司带来价值或者提升?
- Rxjava的线程是如何切换的。
- LeackCanary实现原理
- 在公司负责的事情。
面试官虽然有些问题问的不太合适,但是总体还行。
公司规模:★★★★☆
办公环境:★★★☆☆
技术氛围:★★★☆☆
美术宝
- 引用传递和值传递的区别。
- 多态、静态内部类通过代码来考察。
- Hander中post和sendmessage的区别。
- Hander中postdelay是如何实现的?
- 说说View绘制流程。
- Jvm内存模型,new的对象和值分别存在哪里?
面试官还不错,就是公司的各种薪酬福利都不行,估计真的没多少人愿意去。
公司规模:★★★☆☆
办公环境:★★★☆☆
技术氛围:★★★☆☆
滴滴
一面:网约车面试官
- HashMap的数据结构,其中如何提高查找效率的,每种情况下的查询复杂度是多少?
- HashMa碰撞过多时是如何解决的?扩容具体是如何实现的?
- 内存优化和apk瘦身分别做了哪些?
- 内存里面分配一张大的bitmap会触发什么操作?
- Dalvik和Art有什么区别?每个Android版本具体有哪些改进。
- Bitmap的优化InsampleSize,着色模式有哪些,他们的区别?
- 项目中遇到最难的问题,如何解决的?
- 组件化做了哪些东西?
- Lint解决了哪些问题?
- 手写二叉树展开成链表。
- Kotlin中协程和Rxjava的实现有什么异同?
二面:项目负责人
- 讲讲在公司都负责什么事情?
- 如何降低崩溃率的,你都做了哪些事情?
- 如何协调安排工期的,如果产品给的需求在规定时间内完不成如何处理。
- 和哪些人有过沟通?
- 觉得做的比较好的地方?
- 最难忘的事情。
- 为什么要换工作?
- 有哪些兴趣爱好。
三面:总监
- 自我介绍。
- 现在公司承担的角色。
- 有哪些做的好的地方,有哪些做的不好的。
- 职业发展方向
- 有没有努力的对象,最崇拜的人是谁。
- 有什么问题要问我的吗?
总体面试感受就是面试官会尝试引导你回答一些问题,而不是说在你不会的地方死扣。项目负责人很nice,总监问的问题比较不好回答。后面hr的流程较慢。
公司规模:★★★★★
办公环境:★★★★☆
技术氛围:★★★★★
快手
一面:技术面
- 组件化和模块化的理解。
- handler中postdelay的原理。
- View的事件传递,手指移出view的事件触发流程。
- 父view已经拦截了,子view想处理时用什么方法。
- 自定义view的流程 ,测量模式,如何确定子view的测量模式。
- 什么view的测量模式是UNSPECIFIED。
- 打开支付宝后返回桌面 ,在进入支付宝,会看到刚刚的支付界面,原理是什么?
- Activity的启动模式 taskAfinity 什么情况下用。
- 图片列表和视频列表,按照顺序融合,取前200条返回,手写代码实现。
二面:技术Leader面
- StartActivity启动流程。
- 说说你对Binder的理解。
- ActivityManagerService和zygote进程通信是如何实现的(socket)。
- 数据库多线程访问会出现什么问题。
三面:技术面
- 线程池使用几个参数的意思。
- 双重判断单例手写代码,说说为什么这样写。
- 之前项目中事件总线怎么处理的。
- EventBus的实现原理,为什么现在项目没用?
- 项目中的多线程如何处理?
- Rxjava有哪些好处?
- HashMap的键是存在哪里的?
- Activity A打开B AB分别的生命周期(注意要考虑透明情况)。
快手面试的效率很高,去了两次。一面面试官印象深刻,把我会的基本全问出来了,不太会的还会耐心的给你讲解原理。后面的面试感觉回答的中规中矩。手写代码都写出来了,给人的感觉就会自信很多。
公司规模:★★★★★
办公环境:★★★★☆
技术氛围:★★★★★
字节跳动
- 手写二维数组旋转打印。
- https的安全协议是什么?具体做了哪些事情。
- eventbus的内部实现原理。
- apk瘦身做了哪些事情。
- 讲讲glide缓存策略。
- 说说APT(Annotation Processing Tool)。
- Kt顶层属性和顶层方法的实现原理.
- Java如何调用kotlin的高阶函数
- Sophix热修复对比Andfix做了哪些优化。
两位面试官一同面试,面试的时候是在员工食堂…问的问题都准备的不太好。最主要第一个题目没有写出来,后面就没信心了,然后问了好多好几年前项目的东西,虽然没有通过,但字节跳动还是我比较向往的。不好的地方就是加班比较严重。
公司规模:★★★★★
办公环境:★★★★☆
技术氛围:★★★★★
探探
- 透明Activity 启动流程。
- view的事件传递,什么时候会执行onCancel事件。
- 自定义view流程。
- 安装包瘦身。
- HashMap原理。
公司在国贸附近,10点半去了看着大家都还比较清闲,面试官问的问题我都回答上来了,然后面完了就让我走了,感觉是没在好好招人。或者说面试官感觉我比他厉害,所以不想招我来了。谁知道呢?
公司规模:★★★☆☆
办公环境:★★★★☆
技术氛围:★★★☆☆
轻课
- 说一下HashMap原理
- 热修复原理
- Glide 缓存和生命周期管理
又是一家浪费时间的公司,说HashMap原理的时候,面试官直接就打断了:“你说的网上都有,我想听听不一样的”,然后讲Glide缓存的时候,我还没讲完,面试官说:“那弱引用缓存怎么没说”,我说:“我还没说完”,面试官说:“你刚刚就是已经说完了”。最后面试官问:“我没什么问题了,你还有问题吗?”,直接了当的给了句:”我也没了”。
公司规模:★★☆☆☆
办公环境:★☆☆☆☆
技术氛围:★★☆☆☆
心上
- 讲讲https协议和通讯的过程
- notification如何不显示icon。
- 带阴影的图如何实现。
- 对象传递和值传递。
- HashMap如何扩容。
- GC的过程。
- Android版本的适配做了哪些。
- 说说对Android四大组件的理解。
公司离家近,但是是单双休,面试官也很有耐心,给人的感觉还不错。
公司规模:★★☆☆☆
办公环境:★★★☆☆
技术氛围:★★★★☆
总结
对于面试流程,先去一些小公司,可去可不去的那种,这样可以先让自己明确需要着重复习的地方,同时了解下市场行情。面试到后面就会慢慢找到感觉。跑面试不容易,尤其上午一场下午一场,中午经常没时间吃饭,大家经历过了的都明白,不过也不要灰心,坚持下去总会找到一份满意的工作。