关于算法
算法可以说是现在找工作必须的知识储备,具体得看公司的业务。以我的面试经验来看,总体来说问的不多,还有些公司基本不问算法。
但是如果去面试字节,网易,快手这种每轮必问算法的公司,因为算法题拿不到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协成
Android开发除了flutter还有什么是必须掌握的吗?
相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了
除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!