简历
首先是简历,一般找一个模板,写清楚掌握的技能和自己的项目经历即可。
简历建议2页就行,太长太短都不好。
建议用掌握与熟练掌握取代了解与精通。
这里教给大家一个小套路,可以提高收到面试邀请的机会。那就是在你简历的左上角印上准备面试公司的Logo。面试官在一堆简历中突然翻到一张印着自己公司Logo的简历,不免会多看你的几眼。
关于算法
算法可以说是现在找工作必须的知识储备,具体得看公司的业务。以我的面试经验来看,总体来说问的不多,还有些公司基本不问算法。
但是如果去面试字节,网易,快手这种每轮必问算法的公司,因为算法题拿不到offer就很可惜了。
算法题就好像高考语文的古诗词默写一样,分不多,但丢了就很可惜了。
主要还是平时力扣的刷题积累
面经
接下来就是各公司的面经了,分享出来供大家参考。
上海哔哩哔哩(B站)
第一个去的是我一直心心念念的B站,可以第二轮就挂掉了...
B站一面
1.自我介绍
2.treemap、红黑树、完全平衡二叉树
3.快速排序和插入排序
4.个大致有序的数组如何排序,最快时间复杂度
5.如何自定义实现一个FlexLayout
6.RecyclerView的回收复用机制
7.如何实现RecyclerView的局部更新
8.说说对泛型的了解,Retrofit中的泛型是怎么解析的
9.说说对binder机制的了解
10.进程的状态,线程的状态,两者有区别吗
11.synchronized锁住对象的理解
12.Fragment replace生命周期变化
13.TCP和UDP有什么区别? 讲讲招手挥手过程
14.用过C++开发吗
15.Dalvik和Hotspot虚拟机了解吗?有什么区别?
B站二面
1.说自己做过最满意的项目
2.性能优化你做过哪些工作
3.屏幕适配做过哪些工作
4.遇到过哪些坑(困难点),是怎么解决的
5.如果要你来开发B站的一个页面,哪一个页面可以很快入手
6.用过哪些框架?MVVM?Jetpack有入手吗?
7.用过哪些开源库
6.热修复、插件化都用过,遇到过哪些坑?可以讲讲原理吗
7.为什么想来B站,看哪种视频多一点,点赞多还是白嫖多
8.你觉得B站APP有哪些可以优化的地方
斗鱼直播
斗鱼一面
1.Java多态的理解
2.HashMap原理
3.手写一个单例模式,问有什么优缺点
4.View的绘制流程
5.APP的启动过程
6.说说插件化的原理,资源的插件化id重复如何解决?
7.Recyclerview优化
8.Handler消息机制
9.用过哪些第三方库,OKHTTP原理说一下,热修复原理呢?
10.对屏幕刷新机制的了解,双重缓冲,三重缓冲,黄油模型
11.onCreate,onResume,onStart里面,什么地方可以获得宽高
12.为什么要用线程池(扯到线程分配资源的过程,和进程分配资源过程的区别)
13.GC内核清理用什么算法,老年代有什么算法?
14.TCP 三次握手四次挥手,第一次和第三次如果没收到回应会怎样?
15.MVP和MVVM有什么区别,那种用的多
字节跳动
字节一面
0.算法有点题比较复杂,记不起来了
1.构造方法有哪些?重载与重写的区别?
2.线程有哪些状态?
3.WebView安全问题,做过WebView性能优化吗
4.RecyclerView 缓存结构
5.RecyclerView回收复用机制,回收什么?复用什么?回收到哪里去,复用从哪里拿?
6.Handler休眠是怎样的?epoll的原理是什么?如何实现延时消息,如果移除一个延时消息会解除休眠吗?
7.手势操作ActionCancel后怎么取消
8.熟悉AIDL?支持哪些数据类型?说说oneway的作用?怎么理解单向调用?
9.说说https怎么防止被抓包吧
腾讯(offer)
腾讯技术面
1.介绍一下你们项目的架构
2.Rxjava是怎么实现线程切换的
3.Rxjava自定义操作符
4.ARouter的原理
5.ARouter怎么实现接口调用
6.ARouter怎么实现页面拦截
7.MVP怎么处理内存泄漏
8.OkHttp怎么实现连接池
9.如果让你来实现一个网络框架,你会考虑什么
10.你做过什么性能优化的工作
11.热修复的原理,资源的热修复的原理,会不会有资源冲突的问题
12.ViewPager中嵌套ViewPager怎么处理滑动冲突
13.android源码中有哪些设计模式
14.说说binder机制的原理
15.retrofit怎么做post请求
16.界面优化的一些方法,ConstraintLayout实现三等分,ConstraintLayout动画.
17.synchronize用法,volatile用法,两者的区别和场景
18.做过进程保活吗?
19.App 是如何沙箱化,为什么要这么做?
20.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
21.弱网环境你如何做的网络优化?
22.ConcurrentHashMap 的实现原理
23.Kotlin协成
24.flutter有上手过吗
25.MVP与MVVM有什么区别
26.反问
腾讯hr面
1.为什么考虑换一份工作?
2.在你们公司这几年感觉怎么样?
3.在这几年里,你有做过什么觉得最有价值的工作
4.对腾讯的印象是怎样的
5.有女朋友吗,对搬来深圳什么想法....
6.你有什么要问我的吗?目前有几个offer,倾向性是怎样的?
尾声
如果你的水平接近达到高级水平,有信心快速达到高级水平,那就按照高级水平的技能点和市场招聘的高级要求对照靠近(可以参考我的【GitHub】),一步步达到这个水平。如果你的水平还是初级入门水平,或者兴趣度不是很高,想早点转换,你可以快速转变,因为在正确方向上努力太重要了,这里也建议不要跨度太大,这里我推荐往大前墩或者产品方向转变,当然前提是你有这方面的兴趣。
当然上面讲的都是技术方向上的发展,当然对一些技术栈水平和技术积累到一定程度后你也可以往技术管理和产品方向发展,当然你也可以选择创业,如果你有足够好的idea和心理准备。
当然大部分人停留在中高级水平,然后一直停滞不前,加上外部各种环境,产生了各种焦虑,所以很矛盾,这时候你最好的状态是快速往高级水平发展,当然这里是比较难的,这个坎也是比较难迈过去的。因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。
但是只要坚持,让自己成T字形人才发展,时间会证明一切!!1
网友评论