双非本科字节跳动 Android 面试题分享(已拿 offer),记录下我磕磕碰碰的三个月找工作经历
自我介绍,介绍了自己实习写的刷新加载的组件
问我自己组件里怎么解决的嵌套滑动冲突,三个方面实现完美分发事件
说 retrofit 动态***这块
retrofit 动态***里面如果传的不是 interface 怎么办,这块我不清楚,我就直接说不太清楚,然后说了 retrofit 关于注解的处理
注解生命周期,编译时注解解析
你用过 weex,说下 weex 实现原理,我说我没有看过 weex 源码,但是我实现过一个动态页面渲染框架,说了下我的渲染过程和实现方案。
最近想学的技术,说了音视频,但是因为准备春招放下了
为什么想学,说了自己之前做一个 APP,里面播放器无法使用没认证的 Https 请求,打算自定义一个播放器,在底层处理证书这块,然后在说了下不知道这样的方案可不可行。
使用 https 请求这个不难的, 我说因为我这个是自己签的,就没法认证。
那你 okhttp 里面怎么认证的, 说了拦截器
还有个 ConcurrentHashMap 同步方案, 然后问了 CAS
环状链表
TCP 握手挥手
问问题环节
跟二面一样的问题,顺便问了下今年的怎么招聘的,凉面太多看的我很慌张。
一二三面问题可能搞混,顺序有些打乱,有些问题可能记不清了,三面面试官依然棒,虽然问题节奏很快,但是问题都很棒。
健忘症想起来可能还问了这些(记不起来第几面的了,大部分在第二面吧)
锁, synchronized 和 ReenTrantLock
抢占式锁和非抢占式锁,ReenTrantLock 怎么实现非抢占式
notify 和 sleep 区别
onTouch 和 onClick (这个我隐约中好像被问过
注解处理器,这个我二面三面都有扯到,因为自己实现过动态路由的简单功能
cookie 和 session 记得没答好这个
两星期后收到了 offer,终于赶在毕业前上岸了。
=====================================================================
总的来说,自己如果有想要去的大公司,一定要提升好自己,让自己的能力和素质与公司匹配的上,我也一直相信,机会永远是留给有准备的人。
在字节面试前我也准备了很久,刷了很多大厂面试题,知识点整理出来分享给大家:
Java Object 类方法
HashMap 原理,Hash 冲突,并发集合,线程安全集合及实现原理
HashMap 和 HashTable 区别
HashCode 作用,如何重载 hashCode 方法
ArrayList 与 LinkList 区别与联系
GC 机制
Java 反射机制,Java 代理模式
Java 泛型
Synchronized 原理
Volatile 实现原理
方法锁、对象锁、类锁的意义和区别
线程同步的方法:Synchronized、lock、reentrantLock 分析
Java 锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等
ThreadLocal 的原理和用法
ThreadPool 的用法和示例
wait()和 sleep()的区别
Java 虚拟机,Java 运行,Java GC 机制(可达性分析法,引用计数法)
Java 对象的完整生命周期
JVM 内存模型
进程间通信,线程间通信
JVM 类加载机制
Java 引用类型
设计模式:除常用设计模式之外,特别的,反射机制,代理模式
HTTP 协议和 HTTPS 协议
Socket 协议,Socket 实现长连接
TCP 和 UDP 协议
HTTP 协议中 GET 和 POST 的具体实现
序列化和反序列化
线程池的实现原理
数据库基础知识:多表查询、索引、数据库事务
数据结构
栈和队列
数组和链表,自定义一个动态数组
Hash 表,及 Hash 冲突的解决
二叉树
B+ B-树
基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)
快排的优化
二分查找与变种二分查找
哈夫曼树、红黑树
字符串操作,字符串查找,KMP 算法
图的 BFS、DFS、prim、Dijkstra 算法(高阶技能)
经典问题:海量数据的处理 (10 亿个数中找出最大的 10000 个数 TOP K 问题)
算法
分治算法
动态规划
贪心算法
分支限界法
Application 生命周期
Android Activity 生命周期
Android Service、IntentService,Service 和组件间通信
Activity 的 onNewIntent
Fragment 的懒加载实现,参数传递与保存
ContentProvider 实例详解
BroadcastReceiver 使用总结
Android 消息机制
Binder 机制,共享内存实现原理
Android 事件分发机制
Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava
ActivityThread 工作原理
嵌套滑动实现原理
RecyclerView 与 ListView(缓存原理,区别联系,优缺点)
View 的绘制原理,自定义 View,自定义 ViewGroup
View、SurfaceView 与 TextureView
主线程 Looper.loop 为什么不会造成死循环
ViewPager 的缓存实现
requestLayout,invalidate,postInvalidate 区别与联系
AndroidP 新特性
Android 两种虚拟机
ADB 常用命令
Asset 目录与 res 目录的区别
Android SQLite 的使用入门
各种原理,经典第三方库源码系列
自定义 LayoutManager,RecyclerView 中如何自定义 LayoutManager
VLayout 实现原理,即如何自定义 LayoutManager
Glide 加载原理,缓存方案,LRU 算法
Retrofit 的实现与原理
OKHttp3 的使用,网络请求中的 Intercept
EventBus 实现原理
ButterKnife 实现原理
RxJava 实现原理
Dagger 依赖注入
热修复实现原理,解决方案
组件化原理和解决方案
评论