直接上正题:京东,字节跳动,美团,哔哩哔哩,声网,掌门教育,传音控股,得物,哈啰出行,小红书,其他厂经典题。
前言
前段时间在看机会,本文就是我对求职过程的一个总结。
同时,也作为一个面试官,来说说求职中需要注意的点。
- 各大厂的面试会考核哪些知识点
- 5年开发应该具备哪些技术要点
- 当下市场行情如何,真的很卷吗?
面试题
上主菜
一面技术
京东
- GC原理,有哪几种GC方式
- HashMap原理
- Hybrid开发流程、机制
- WebView内存泄露
- 包体积优化
- 自定义View需要注意哪些
- 事件分发机制
- ViewModel原理
- 屏幕旋转ViewModel怎么做到保存数据的
- LiveData原理
- Flutter线程机制,单线程多线程
- 组件化开发
- 介绍一个自己的开源项目
- 有参与过别人的开源项目吗
字节跳动
- 浏览器输入一个地址,按下回车,这个过程是什么样的
- 简单介绍一下TCP
- 简单介绍一下Https
- 说说对称加密和非对称加密,说说公钥
- 并发操作如何保证线程安全
- 锁有哪些
- 简单介绍一下HashMap
- Arraylist是线程安全的吗
- 知道CAS、原子性吗
- AtomicBoolean和boolean的区别
- 用过哪些设计模式
- 介绍一下观察者模式
- 用过哪些排序算法
- 介绍一下贪心算法
- 介绍一下快排原理
- 算法,给定一个有序不重复数组,使用时间复杂度小于N方的方法,找到所有两两相加等于target值的组合:
int[] a={1,2,3,4,5,6,7,8} int target=7
美团
- Java对象生命周期
- GC机制
- Glide缓存机制
- Glide对Bitmap是怎么优化的
- Okhttp请求流程
- Retrofit中的设计模式
- App启动流程
- Apk打包流程
- 重构做了哪些工作
- 内存泄露,举例场景
- LeakCanary实现原理
- Handler消息机制
- 线程有哪些状态
- Hybrid开发介绍
- Js功底怎么样
- 未来职业规划
哔哩哔哩
- MVC,MVP,MVVM的区别
- 使用MVVM有遇到什么问题吗
- 协程原理
- 协程并发怎么处理的
- 热修复原理
- 用热修复的过程中有遇到什么问题吗
- 启动优化
- 包体积优化
- 绘制优化
- 全埋点是怎么做的
- Apk更新流程
- 多渠道打包
- 怎么辨别华为的包更新别的应用市场的包
- 算法,插入排序原理
声网
- 觉得做的最好的项目
- Jetpack用了哪些组件
- ViewModel如何数据共享
- ViewModel在Activity旋转时如何保存数据的
- ViewModel怎么创建的,存在哪
- 使用ViewModel过程中有没有遇到什么问题
- LiveData原理,怎么派发数据的
- postValue是怎么执行的
- 使用LiveData的过程中有没有遇到什么问题
- 自定义View有哪些注意事项
- 简单介绍一下协程
- 多个协程怎么保证数据安全的
- 算法,输入(H₂O) ×2,输出h4o2
掌门教育
- 笔试逻辑题
- Java有哪些数据结构
- Arraylist是线程安全的吗
- String,StringBuilde,StringBuffer的区别
- Java中的锁介绍一下,同步锁举例
- 四大引用区别,场景举例
- Activity生命周期
- Fragment生命周期
- Fragment销毁生命周期执行顺序
- 自定义流程,举例
- 自定义View刷新方式有哪些,执行流程
- 事件分发原理,举例,延伸
- 滑动冲突怎么解决
- 怎么自己实现一个长按事件
- Service是哪个线程,怎么通信
- Handler消息机制
- Handler发送消息是一定立即执行的吗
- Handler运行在哪个线程
- 子线程可以创建Handler吗,写法有哪些区别
- Kotlin定义变量的方式有哪些
- lateinit怎么确保使用时已经初始化
- let,run,apply介绍,区别
- inline原理
- 简单介绍下协程
- 协程并发怎么处理
- 协程底层是怎么实现的
- 内存泄露原理,举例场景
- 启动优化
传音控股
- 做的最有成就感的项目是哪个
- 印象最深刻的项目是哪个
- LiveData底层实现原理
- 启动优化
- 包体积优化
- 自定义View流程
- View异步加载
- 有用过哪些设计模式
- 介绍一下单例,饿汉式,懒汉式,双重锁
- 代理模式和装饰模式的区别
- 策略模式和状态模式的区别
- 说说观察者模式
- 有看过哪些三方库的源码
- Glide四层缓存机制
- AMS了解多少
得物
- 简单介绍一下HashMap
- HashMap调用put的执行流程
- Activity启动流程
- Binder机制
- Handler消息机制
- Handler是怎么实现主线程和子线程的通信的
- Looper卡死为什么不会造成主线程的阻塞
- 了解过内存泄露吗
- 是怎么发现内存泄露的,怎么处理的
- 线上的内存泄露是怎么监控的
- LeakCanary实现原理
- 软引用和弱引用的区别
- 了解过ANR吗
- 什么原因会造成ANR
- Activity的响应时间为什么是5s
- 事件分发机制
- 怎么解决滑动冲突的
- 录音功能是怎么做的
- 编码解码相关
- 包体积优化做了哪些工作
哈啰出行
- 挑一个项目详细说一下,以及相关技术栈
- 介绍一下协程机制
- 说一下Dispatchers,withContext,Scope他们的作用
- 说一下你理解的MVP,MVVM
- Flutter相关
- 性能优化做了哪些工作
- 编译速度怎么提升的
- 内存泄露
- LeakCanary检测原理
- 热修复,Sophix原理,ClassLoader
- Apk打包流程
- 多线程并发,如何保证线程安全
- synchronized修饰方法和修饰代码块有什么区别
小红书
- 技术调研你是怎么做的,会考虑哪些因素
- 说一下MVVM
- 用过Jetpack中的哪些组件
- LiveData是怎么做数据派发的
- ViewModel屏幕旋转的时候怎么做到不丢失数据的
- 使用MVVM的过程中有遇到什么问题吗
- 性能优化做了哪些工作
- 内存泄露有哪些场景
- LeakCanary检测原理
- 如果让你做一个自动化的工具去检测图片过大并自动压缩你会怎么做
- 自定义View画板是怎么做的
- 怎么检测页面的FPS
- Handler在onCreate中发送大量数据会导致主线程卡顿吗
- LayoutInflater.inflate有几个参数,分别是什么意思
其他厂整理补充
- Android中的Context了解多少
- Application里面可以弹窗吗
- Activity、Window、View三者的关系
- OkHttp中有哪些设计模式
- Retrofit中有哪些设计模式
- Retrofit.create做了哪些工作
- 自定义一个圆角View
- 协程launch有哪些参数
- 说说by关键字
- 代理和委托的区别
- 双亲委托模式
- 有几种获取view宽高的方式
- view.post为什么可以获取到
- getWidth和getMesureWidth的区别
- 手写遍历二叉树
- 手写双重锁单例
- 手写插入排序
- 手写双数组去重并排序
- 如何判断链表有环
还有一些公司的没有记,比如蔚来、中欧基金、阿里等,如果上面这些你能掌握大部分,自然也不在话下。
二面、三面技术
都是偏项目和综合能力,因人而异就直接整理了。
- 你负责项目中的哪些模块
- 介绍一下xx功能的流程
- 项目的架构是怎样的
- Kotlin和Java混编有哪些需要注意的
- 项目中有遇到哪些难点
- 如果让你重构,你会怎么做
- 学习的途径有哪些
- 你觉得什么样的代码是好代码
- 团队是怎么分工的
- 怎么做需求管理
- 期望什么样的团队
- 怎么看待大前端方向
- 一个新技术如何在团队里推广
- 未来的规划是什么,你打算怎么实现
- 认为自己的优点是什么,缺点是什么
- 为什么离职
HR面
整理。
- 为什么离职
- 介绍一下过往的工作经历
- 在上家公司你有什么收获吗
- 目前看机会会考虑哪些因素
- 你在之前的团队中是怎样一个角色
- 有什么兴趣爱好吗
- 最有成就感的一件事
- 有没有做过什么不可思议的事
- 你认为自己的优点是什么
- 最近有在看什么书吗,有什么感想
- 你一般遇到问题都是怎么解决的
- 未来的职业规划是什么
- 你对未来的公司有什么期望吗
- 目前薪资
- 期望薪资
- 还有什么想要问我的吗
技术要点
针对上面的问题,我总结了一下面试前需要掌握的一些知识点:
- Java基础、Kotlin基础、Android基础(重要)
- App启动流程
- Handler消息机制
- View绘制流程
- 事件分发机制
- Jetpack常用组件原理
- Kotlin协程原理
- 性能优化
- 多线程、并发
- 组件化开发
- 热修复原理
- 常用三方库原理
- 常见的设计模式
- 数据结构和算法
建议面前多练练手写算法,最好是拿笔在纸上写。
关于算法,不过是基于数据结构去操作数据的思想而已。 如果说限制了复杂度而想不出来的话,可以先写再看如何优化。
市场行情
金九银十招聘季,机会超级多啊,遇到好公司就入了吧。
可能有些同学看了上面的面试题觉得卷,正常的。
现在市场越来越成熟稳定,对面试者的要求也更高,加上技术更新又快,从Java到Kotlin、到Flutter、到Compose等等,确实有很多东西要学,很多同学都表示学不动了,我觉得,盲目跟风不如好好沉淀。
另外,再从面试官的角度
聊聊。
虽然说大部分面试确实是各种底层实现、底层原理、手写算法什么的,不过作为面试官来说,其实有些也并不是要你都掌握的,问的深,一方面是校验八股文,另一方面主要是技术摸底,看看你的技术边际在哪,所以说,一场面试下来,能答上大部分即是通过了,当然,越多越加分。
只要技术够硬,都是机会。
最后
在这里,我针对每个Android开发必备知识点都编入一套经典电子书库(包含面试找工作的资料、JAVA知识、Android R FrameWork源码与UI、APP调优、架构、NDK模块开发(音视频系列),Flutter。。。)、汇总都打包放在这了,这套资源是伴随我从小白一路成长为Android高级开发工程师点击下方链接直达获取:(for free)
Codechina
金九银十希望每一位读者都能找到一份理想的工作,不负努力,不服期待。