另一大块就是算法了,某些一线公司比较喜欢考,比如今日头条在面试邮件中就明确指明要考算法。因此要对标你的目标公司是不是要考来进行复习。具体考哪些内容,以我面试的那些历程来看,基本都没超出《剑指offer》那六十几道题的范围(可能有对应题的变形),因此花一个礼拜左右的时间把那六十几道题弄懂并自己动手实现一遍基本ok,当然一些基础算法还要自己认真去总结学习,比如排序、二分查找、链表和树的基本操作等。
面试经历
主要是根据回忆总结的(会有遗漏点)。
1. 腾讯(QQ音乐)
感觉不擅长互动较少的电话面,很难快速暖场,问题回答确实不好。当时还在复习的初级阶段内容都没看完,也是一部分原因,基本算是草草收场吧。问得比较多的是优化相关的问题。
2. 支付宝(海外版)
仍是电话面的,还是没有找到感觉,回答不在状态。最后猎头反馈的本次面评是:过往项目功能较简单、某些技术细节掌握不到位。算是浪费了机会。
3. 今日头条
是所有参加的面试里比较专业的面试体验吧,面试官体现了很好的技术素养。总共参加了3轮视频面试(技术面全部面完),开始还以为很有希望(感觉面得不错,基本没有阻塞的知识点),最终结果却是挂掉了,原因目前未知。当然这里也花了很长时间准备(3个礼拜左右),主要是因为要考算法,重头复习了算法,还把所有知识点重头捋了一遍。
主要考察的问题大体有如下一些:
Android:
-
webview加载h5的优化(问得很多)
-
优化相关(包大小、启动优化、卡顿),webp的透明通道如何处理,代码压缩如何处理
-
native-jni相关;如何分析native的崩溃堆栈;
-
进程保活
-
插件化原理
-
网络优化(答的不好)
-
https,fiddler抓包怎么处理的,为什么fiddler可以篡改https的数据。header中的host作用是什么
-
懂不懂kotlin (直接说不会了)
-
activity的4种启动模式,A启动B时activity的两个acitivity的生命周期的流程是什么
-
如何监听activity是从后台切换到了前台?不是在onResume()中处理push进程的挂掉之后,再次拉起时如何恢复push进程中service的状态
-
两个进程如何使用binder进行双向通信
-
如何监测普通对象是否泄漏,leakcanary在dump时卡顿厉害,这里该如何优化listview和recycleview的差别
-
WebSocket、socket、NIO
-
对app架构的理解
-
activity的启动流程
-
两个页面的消息同步怎么做?(类似以前评论sdk的在子评论页面点赞时,back回来后需要同步这个点赞状态)
java:
-
类加载流程
-
类的唯一标识是什么
-
gc流程
-
map都有哪些类型,特点是什么,hashmap内部结构
-
动态代理跟静态代理区别,如何代理一个普通对象
算法:
-
合并两个有序链表,使得最终有序。
-
Map
map,按value平方的升序打印key-value。
- 1000万个0~100之间的小数,找top100。如果是保留两位小数,怎么做?
4. akulaku
整体的面试体验还是不错的,面试官技术素养也不错。一下午走完了所有流程(2轮技术1轮HR)。该公司应该也算是创业公司吧,有阿里的投资,内部很多产品线,主打东南亚电商和金融,目前算是个爆发增长期。记忆比较深刻的问题有:
retrofit的动态代理中是如何处理接口返回类型的(因为接口申明的泛型在运行时会被擦除)
在做项目架构时封装的BaseActivity/BaseFragment一般要放哪些对象Binder整体的运行逻辑是怎样的(要能说出底层的大概原理)
5. 恒信永利
公司没什么名气,做互联网金融。但从面试过程来看技术实力还是相当不错,当时面的是架构师岗。准备不是太充分很多问题回答的确实不好(应该只复习到中期阶段),整体来讲也还可以。而且在这之后就开始慢慢找到自信了。
记忆比较深刻的问题有:
-
架构的核心是要解决什么问题,怎样才称为好的架构
-
桥接模式属于什么类型的设计模式(结构型模式),它是用来解决什么场景的问题
-
画一下IM系统中用户A给用户B发送消息时数据包和信令包的交互图。
CurrentHashMap的实现有没有看过源码,说一下它优化并发的原理。对CAS的理解,用你熟悉的并发方式实现一下生产者-消费者模式并评估它的效率。
6. oppo(应用商店)
公司就不说了,整体是很不错的。面试体验也还可以,参加的是他们周末的招聘会,面了2轮技术面。感觉是第二轮群面的时候表现得不好,有细节没准备充分。有点浪费机会了的感觉,导致后面也没有机会面其他部门了。
比较深刻的似乎大都是跟View相关的问题:
-
View体系中动画的绘制原理。(没有答到点上,需要看View中对动画处理的那部分源码)
-
上面的提到的滑动冲突中fling()的停顿问题如何解决
-
有哪些方式可以实现滚动一个子View
-
activity的启动流程
7. vivo(大数据中心-埋点sdk)
公司也不说了,整体都挺好的。总共面了3轮技术面+HR面,由于前面面经的积累,目前来看基本没再碰到应用层面的难题。
印象较深的面试题有:
-
说一说系统ANR的实现原理,平常是如何解ANR问题的,如果在发生ANR时trace文件打印的堆栈是MessageQueue.nativePollOnce()处阻塞该如何定位具体问题在哪
-
如何实现热更新的不需要重启进程就生效
-
activity的启动流程
-
说一下乐观锁和悲观锁
-
单例模式在实际使用中有什么缺点
结尾
最后,针对上面谈的内容,给大家推荐一个Android资料,应该对大家有用。
首先是一个知识清单:(对于现在的Android及移动互联网来说,我们需要掌握的技术)
泛型原理丶反射原理丶Java虚拟机原理丶线程池原理丶
注解原理丶注解原理丶序列化
Activity知识体系(Activity的生命周期丶Activity的任务栈丶Activity的启动模式丶View源码丶Fragment内核相关丶service原理等)
代码框架结构优化(数据结构丶排序算法丶设计模式)
APP性能优化(用户体验优化丶适配丶代码调优)
热修复丶热升级丶Hook技术丶IOC架构设计
NDK(c编程丶C++丶JNI丶LINUX)
如何提高开发效率?
MVC丶MVP丶MVVM
微信小程序
Hybrid
Flutter
接下来是资料清单:(敲黑板!!!)
领取通道在这里给你们摆上了~
点击我的GitHub免费获取
1.数据结构和算法
2.设计模式
3.全套体系化高级架构视频;七大主流技术模块,视频+源码+笔记
4.面试专题资料包(怎么能少了一份全面的面试题总结呢~)
不论遇到什么困难,都不应该成为我们放弃的理由!共勉~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
片转存中…(img-iYDr1Yce-1646140044278)]
4.面试专题资料包(怎么能少了一份全面的面试题总结呢~)
[外链图片转存中…(img-b9aEffRa-1646140044278)]
不论遇到什么困难,都不应该成为我们放弃的理由!共勉~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
[外链图片转存中…(img-Wp0kjhfl-1646140044279)]