写在开篇
个人情况介绍/闲话:
先介绍一下自己的背景,北航本硕,学习成绩中上,有两个学科竞赛奖项,一篇SCI。计算机方面,没有实习,只有一个略微相关的项目能写到简历里面。专业知识全靠自学,所以过程也异常痛苦。
准备时间从201年寒假开始,到2019年八月底结束,前后跨度不到一年。在这期间,互联网总共投递20多份简历,笔试8次,面试9次,5家单位给出明确录用意向,最终的结果比自己的预期理想。
2020年5月已近尾声,目前互联网方向拿到的offer有百度,网易,字节跳动,美团点评。距离毕业答辩还有段时间,写写我的学习进阶之路。
以下主要分享面经和个人学习方法,会包括很多PDF文档,如面试题库(含答案+解析)、学习笔记、实战文档和脑图等等,均可以免费分享,直接点击我即可领取~
百度,字节跳动,美团点评,网易面试题和面试经历
百度核心面试题
- 百度一面 1h
自我介绍
项目介绍
- 编码规范有用吗?
Android
-
Android四大组件安全性
-
Activity启动模式
-
IntentFilter匹配规则,action和category区别?
-
Handler 阻塞为什么不卡死?
-
点击事件分发机制,onTouchEvent返回false? dispatchTouchEvent返回false?
-
Looper
-
对象池,手写对象池实现
-
ContentProvider原理
-
sp支持跨进程么?怎么解决跨进程,怎么实现进程同步
-
帧动画实现: 100张图,200ms显示一张,读取一张图要400ms,怎么解决避免卡顿(多线程读)
-
Bitmap内存复用限制条件
-
线程时间的分配原理
-
百度二面 45min
项目
- 梳理项目
- 难点
- 技术框架
算法题
- 手写二分法
- 电梯状态机设计
优缺点
-
优点
-
缺点
-
专业
-
百度三面 45min
技术
- 最长公共子串
- 类加载机制
- okhttp原理
- 热修复原理
其余闲聊
- 优点缺点
- 大学遗憾
- 组织哪些活动
- 长期坚持的事情
- 专业去向
百度,网易,字节跳动,美团点评面试题答案:
因篇幅问题,面试题答案整理在pdf文档里,需要面试题答案的,私信【面试】即可免费获取~
-
网易核心面试题
-
网易技术一面 1h
自我介绍
项目介绍
- 华为解bug映像最深的
Android
- TouchEvent传递过程? onTouchEvent返回flase怎么办
- 怎么设计缓存
- Android数据持久化
- 数据库怎么批处理(原理)
- SP支不支持多线程?SP怎么实现多线程
- View绘制过程
- Handler消息机制
Java
- B线程怎么实现等待A线程完成工作
- 线程怎么结束工作 Java结束线程的三种方法
- Java哪些方法支持中断
- 设计一个有限资源的请求
- 怎么设计对象池(对象的存与放回)
- 线程池的线程什么时候创建
- Java中的锁
- 可重入锁性能
笔试题
- 两个数组交换一个值,让和相等,找到这两个值
网易技术二面 1h
自我介绍
华为实习
- 参与的项目
- 解的bug
- 参与的编程规范说一下
- Lint工具?
设计模式
- 单例模式
- volatile关键字原子性
Android
- 进程间通信方式(与linux进程间通信区别)
- Socket怎么验证安全性
- 广播(全局 本地区别)
- 怎么实现文件的多进程通讯(A进程改了文件怎么通知B进程读取)
- 二级缓存怎么设计(网络 数据库 view间关系)
View
- Activivty生命周期
- onSaveInstanceState onRestoreInstanceState区别,调用时机
- 广播注册应该在Activity哪个生命周期里
- 怎么统计onCreate的次数
- Fragment与Activity区别
- Fragment生命周期管理
- Fragment与ViewPager怎么做到重复加载
- View绘制过程 MeasureSpec的三种模式
- Framelayout LinearLayout ReativeLayout怎么做到View在右下
- margin padding区别
- gone invisible的区别
- requestLayout、invalidate与postInvalidate区别
- Android动画 怎么取消循环动画 repeat模式
- drawable与view区别 有哪些drawable
网易技术三面 50min
自我介绍
项目介绍(不用说太细)
Android
- 图片传输过程中URL加上默认大小如果是wrap_content怎么办
- 图片相关缓存,编码,内存复用
- svg (其他图片格式)
- drawable mutate了解不
- okhttp 桥接拦截器和缓存拦截器
- 设计自定义DNS解析器
- 打点系统设计:写文件过程中会有buffer,此时进程被杀怎么办,怎样设计日志系统 打点日志被用户篡改怎么办,保证日志安全性
- 磁盘内存映射原理
- 有没有看过开源打点框架
- 平时开发有没有遇到过资源复用
- 最近了解啥Android新动向不
- 自己学习计划
字节跳动核心面试题
一面 60min
- 一面侧重考察基本的计算及原理和Android基础机制,大部分都忘记了,发几个能记住的吧* 1.自我介绍,大概就是说些简历上没有的亮点还有跳槽原因等,从各个方面彰显自己优势和技术* 2.手写代码* (1)计算View树上所有view的数量* (2)参数ViewGroup* (3)补全空方法返回view数量(就是数据结构多叉树递归层序遍历+Android View基本api调用)* 3.主线程Looper一直循环查消息为何没卡主线程?* 4.RecyclerView相对ListView区别?* 5.好像还有Bitmap resize相关,就是设置option,然后decode等等等等吧* 6.用MultiDex解决何事?* 7.其根本原因在于?* 8.Dex如何优化?* 9.主Dex放哪些东西?* 10.主Dex和其他Dex调用、关联?* 11.Odex优化点在于啥?* 12.Dalvik和Art虚拟机区别?* 13.多渠道打包如何实现(Flavor、Dimension应用)?* 14.从母包生出渠道包实现方法?渠道标识替换原理?* 15.Android打包哪些类型文件不能混淆?* 16.Retrofit主要实现机制?* 17.动态静态区别?* 18.思维、架构:模块化怎么做的?怎么设计的?* 19.接口发现暴露怎么做?* 20.基于什么思想?* 21.MVC、MVP、MVVM应用和彼此本质区别?
二面 50min
- 这面上来大概介绍了下自己,然后问了点我用过的东西比如Glide缓存特点?随后:你擅长Android中哪个方向呢?这问题我其实是按Android UI动画方面和移动端后台交互方案制定来预想过的,然鹅说完他挑了Android UI,噩梦就开始嘞- -直接他出效果我来想方案做。* 1.你看我这手机上这个launcher里应用抽屉(就是很多ROM都有的把很多APP管理归类的二级菜单功能)他在这ROM前一版是有个毛玻璃效果背景的,从系统ROM角度说下怎么做吧?* 2.UI相关的两个大问题:实时的水面倒影效果怎么做?这里面实时更新的UI性能如何保证?(我也没做过,估计面试官也知道,所有就说了一下思路啥的,最后也认可了我的思路策略以及知识迁移解决问题能力吧)* 3.偏UI基础的考察:Measure、Layout、draw大流程、绘制顺序,基于这些说下TagLayout(FlowLayout)怎么写?* 4.算法题:俩线程分别持续打印奇数和偶数,实现俩线程的交替打印(从小到大)
三面
-
最开始还是自我介绍,二面虐惨了,所以感觉三面轻松多了* 1.算法题解决个实际问题* 2.设计个IM客户端以及数据库架构,架构每一层都是啥,互相怎么交互工作?
-
HR面
-
这面就是聊天,问问跳槽原因、个人爱好、个人职业规划、目前薪酬、跳槽薪酬要求,福利同步一下(大概就这些了)
美团核心面试题
一面 1h
- 事件分发
- 自定义view
- 给了个布局问你的实现方式
- 有没有了解过新的布局
- 有没有了解过新的布局
- 实习经历
- Android布局优化
- 过度绘制及优化
- 讲讲你认为你Android里理解最深的点
- 了解过framework吗
- 讲讲二叉树前中后序遍历
- 数据库 写了个简单的sql 触发器
- 类加载的过程
- kotlin扩展方法 扩展属性
- 看过哪些开源库(聊了聊retrofit)
- 实习过程中最有成就感的事
- 算法 反转链表(没写出来 我是个傻子吧) 删除公共字符串 冒泡排序怎么排的 稳定吗
一面完感觉还不错能预料到会有二面,问的都比较中规中矩
二面 50min
- 实习经历 做了哪些需求 有什么收获 对前人留下的代码有什么想法,怎么解决的
- Android 滑动时间冲突解决 handler原理 Android跨进程通信 Activity生命周期 Android为啥要分四大组件 弹一个dialog时Activity生命周期变化 onstart onresume分别执行什么类型的业务
- Java 手写单例 hashmap源码 多线程,锁
- 操作系统 进程和线程的区别
- 算法 之字形打印二叉树(又没写出来 我是***)
面的时候刚从天津坐车回来,头有点晕,感觉有点拉跨,答得很一般,没想到还有三面
三面 1h
- Java 封装继承多态,重点说理解及应用 static 重写和重载的区别、理解及应用 hashmap底层,把面试官当小白给面试官讲
- Android 四大组件的理解 activity生命周期、横竖屏生命周期、有没有不让activity销毁的方法 启动模式 两种service有啥区别 service执行耗时操作会咋样、咋解决 intentservice底层 service保活 broadcastreciver权限(不会) Android跨进程方式 intent底层是怎么跨进程的 常用布局,重点说理解及应用 Android动画有哪几种,有没有底层研究 自定义view、自己写过的demo 内存泄漏场景及解决办法
- 网络 TCP三次握手/四次挥手 讲讲 有没有直接在TCP层做过操作
- 操作系统 进程和线程的区别
- 闲聊 实习最大的收获是什么 你现在在团队里算是核心吗(我一个实习生核心才怪) 有没有觉得对自己能力提升特别大的需求 如果给你offer你来吗 如果要来的话离开现在的团队融入新的团队你有什么想法
结束语
这几次面试竞争者来自全国各地,科班与非科班,本硕博都有;企业有上市公司,有独角兽,也有初创企业和国企外企;时间跨度长,从七月提前批开始,直到现在尚未结束;变数多,企业和个人都是双向选择。因此,经历过秋招的人都会脱一层皮。未来方向的迷茫,被拒绝的沮丧,等待结果的焦虑,拿到offer的喜悦和选择的纠结,未来发展的担忧,这些大部分人都或多或少会经历。也正因为如此,我才决定详细地写下我的历程,为后来者,特别是那些迷茫的转行者,提供一个真实的案例。
对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。
以上内容中所有的学习资料、面试资料,均可以免费提供,希望大家面试顺利,拿下自己心仪的offer!
需要的朋友:直接私信我【学习】免费领取~ 资料里面有大量BATJ面试题集锦,以及高级核心资料哦!
或者直接点击下面链接领取
Android学习PDF+架构视频+面试文档+源码笔记
网友评论