总结
这次面试问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码
因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
美团
-
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协程原理
-
性能优化
-
多线程、并发
-
组件化开发
-
热修复原理
-
常用三方库原理
-
常见的设计模式
-
数据结构和算法
建议面前多练练手写算法,最好是拿笔在纸上写。
关于算法,不过是基于数据结构去操作数据的思想而已。
如果说限制了复杂度而想不出来的话,可以先写再看如何优化。
Author : yechaoa
目前并不是招聘旺季,但机会还是有的。
可能有些同学看了上面的面试题觉得卷,正常的。
现在市场越来越成熟稳定,对面试者的要求也更高,加上技术更新又快,从Java到Kotlin、到Flutter、到Compose等等,确实有很多东西要学,很多同学都表示学不动了,我觉得,盲目跟风不如好好沉淀。
另外,再从面试官的角度
聊聊。
虽然说大部分面试确实是各种底层实现、底层原理、手写算法什么的,不过作为面试官来说,其实有些也并不是要你都掌握的,问的深,一方面是校验八股文,另一方面主要是技术摸底,看看你的技术边际在哪,所以说,一场面试下来,能答上大部分即是通过了,当然,越多越加分。
只要技术够硬,都是机会。
简历是开启面试的第一步,重要性不言而喻,一方面反应你的实力,另一方面也反应跟目标岗位的匹配度,不过很多JD都是复制粘贴,我个人也没有动态改简历。
最后
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
同时我经过多年的收藏目前也算收集到了一套完整的学习资料以及高清详细的Android架构进阶学习导图及笔记分享给大家,希望对想成为架构师的朋友有一定的参考和帮助。
下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。
不论遇到什么困难,都不应该成为我们放弃的理由!
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
同时我经过多年的收藏目前也算收集到了一套完整的学习资料以及高清详细的Android架构进阶学习导图及笔记分享给大家,希望对想成为架构师的朋友有一定的参考和帮助。
下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。
[外链图片转存中…(img-0IIEU1nu-1715752176507)]
不论遇到什么困难,都不应该成为我们放弃的理由!
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!