写点什么

双非本科字节跳动 Android 面试题分享(已拿 offer),记录下我磕磕碰碰的三个月找工作经历

用户头像
Android架构
关注
发布于: 刚刚
  1. 自我介绍,介绍了自己实习写的刷新加载的组件

  2. 问我自己组件里怎么解决的嵌套滑动冲突,三个方面实现完美分发事件

  3. 说 retrofit 动态***这块

  4. retrofit 动态***里面如果传的不是 interface 怎么办,这块我不清楚,我就直接说不太清楚,然后说了 retrofit 关于注解的处理

  5. 注解生命周期,编译时注解解析

  6. 你用过 weex,说下 weex 实现原理,我说我没有看过 weex 源码,但是我实现过一个动态页面渲染框架,说了下我的渲染过程和实现方案。

  7. 最近想学的技术,说了音视频,但是因为准备春招放下了

  8. 为什么想学,说了自己之前做一个 APP,里面播放器无法使用没认证的 Https 请求,打算自定义一个播放器,在底层处理证书这块,然后在说了下不知道这样的方案可不可行。

  9. 使用 https 请求这个不难的, 我说因为我这个是自己签的,就没法认证。

  10. 那你 okhttp 里面怎么认证的, 说了拦截器

  11. 还有个 ConcurrentHashMap 同步方案, 然后问了 CAS

  12. 环状链表

  13. TCP 握手挥手


问问题环节


跟二面一样的问题,顺便问了下今年的怎么招聘的,凉面太多看的我很慌张。


一二三面问题可能搞混,顺序有些打乱,有些问题可能记不清了,三面面试官依然棒,虽然问题节奏很快,但是问题都很棒。


健忘症想起来可能还问了这些(记不起来第几面的了,大部分在第二面吧)


  1. 锁, synchronized 和 ReenTrantLock

  2. 抢占式锁和非抢占式锁,ReenTrantLock 怎么实现非抢占式

  3. notify 和 sleep 区别

  4. onTouch 和 onClick (这个我隐约中好像被问过

  5. 注解处理器,这个我二面三面都有扯到,因为自己实现过动态路由的简单功能

  6. cookie 和 session 记得没答好这个


两星期后收到了 offer,终于赶在毕业前上岸了。


经验总结


=====================================================================


总的来说,自己如果有想要去的大公司,一定要提升好自己,让自己的能力和素质与公司匹配的上,我也一直相信,机会永远是留给有准备的人。


在字节面试前我也准备了很久,刷了很多大厂面试题,知识点整理出来分享给大家:


Java 基础




  • 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 运行,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 问题)

算法

  • 分治算法

  • 动态规划

  • 贪心算法

  • 分支限界法


Android 基础




  • 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 的使用入门


Android 开发高级




各种原理,经典第三方库源码系列


  • 自定义 LayoutManager,RecyclerView 中如何自定义 LayoutManager

  • VLayout 实现原理,即如何自定义 LayoutManager

  • Glide 加载原理,缓存方案,LRU 算法

  • Retrofit 的实现与原理

  • OKHttp3 的使用,网络请求中的 Intercept

  • EventBus 实现原理

  • ButterKnife 实现原理

  • RxJava 实现原理

  • Dagger 依赖注入

  • 热修复实现原理,解决方案

  • 组件化原理和解决方案


Android 系统




用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
双非本科字节跳动Android面试题分享(已拿offer),记录下我磕磕碰碰的三个月找工作经历