我从面试无人问津到手拿百度offer,都走过了那些路

作者分享了自己从机电专业转行做Android开发的经历,包括初期的困难、学习过程、工作中的技术提升,以及如何通过两年的积累和准备成功跳槽至百度。面试中涉及的问题涵盖了Android系统、数据结构、多线程、网络协议等多个方面。
摘要由CSDN通过智能技术生成

前言

本人是湖北普通一本学历,机电专业,18年转行做的andorid开发。作为一个野生程序员,成长历程比较坎坷,开始靠培训机构或者个人自学,初级时就能入职互联网开发,非常困难,初级入职阶段,就能淘汰一大批培训机构的同学,很幸运自己能实现转变,很感激帮助我的同学和第一家时经理收留信任。靠着自己2年多的不断的学习和积累,从一个小白白成长为一个合格工具人,还完成个人薪资翻倍的跳槽。

在第二家公司,也慢慢的技术视野和深度的扩展,能从容应对开发和各种问题。由于公司没有涨薪制度,所以就有了跳槽的计划准备,没想到,这一准备,就是2年时间,靠着总结和积累,跳槽就水到渠成,没有多少运气加成,全是踩坑过河。

所以,对科班人来说,我就是最笨的成长。虽然初期的成长慢了些,但是我有我的坚韧性格,成长多远,多半靠自己,多多灌输自己点励志鸡汤,多多学习别人的长处,多虚心请教别人的心得和学习习惯,成长也是很快的。今年也顺利拿到了百度的offer,附上面经整理!

在这里插入图片描述

一面

一面问的问题大多是开放性问题,主要是看个人思路吧。

1.手撕依赖关系树扫描算法(期间提了不重复扫描、优化时间复杂度等要求)
2.简述如何实现未知长度的数组翻转?
3.简述内存泄漏,你处理过哪些内存泄漏?
4.以100ms/张的间隔时间播放100张图片,且每张图片需要400ms进行加载,如何设计?
5.如何在无序数组中快速找到最小值(手撕二分查找算法)
6.简述Android中的ANR,以及为什么会出现ANR?
7.简述Handler消息机制(深挖内部实现原理)

二面

1.手撕一个有序数组的二分查找算法
2.列举一个你在实际项目中所进行的性能优化(深挖具体细节)。
3.简述单例模式的实现方式,且单例模式有什么优缺点?
4.简述Java的异常处理机制
5.多线程间如何进行信息通信?
6.多线程如何保证线程安全?
7.简述线程池
8.简述HashMap实现机制,如何解决HashMap的线程安全问题?
9.TCP和UDP的区别,分别有哪些应用场景?
10.简述七层网络模型
11.简述Android点击事件的分发机制
12.画一个BLE APP的功能架构图

三面
三面相当于是综面和HR面和在一起了,主要问题也是分两个模块。

业务类问题:
1.手绘Class间依赖关系图
2.聊聊如何处理并发编程
3.手撕消费者模型代码,主要线程安全、队列等情况。
4.简述Android系统的类加载机制
5.Activity的生命周期通过什么机制来通知?

HR类问题:
1.聊聊个人的职业规划
2.你最大的优点是什么?
3.你有哪些方面待改进?
4.简述你大学所做的事情
5.说说你大学里最遗憾的事情
如果你和舍友产生了矛盾,如何处理?

Android面试题和答案已按照规范已整理完成,

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要《Android面试大厂必考174题》完整文档的可以加微信 即可免费领取!

Android面试大厂必考174题

纲要

1. SD卡
2. android的数据存储方式
3. BroadcastReceiver
4. sp频繁操作会有什么后果?sp能存多少数据?
5. dvm与jvm的区别
6. ART
7. Activity的生命周期

img

8. Application能不能启动Activity
9. Activity的状态都有哪些
10. 横竖屏切换时Activity的生命周期****Activity的状态都有哪些
11. 如何设置activity成窗口样式
12. Activity的启动方式

img

13. Service的生命周期
14. IntentService
15. Fragment和Activity的onCreateOptionsMenu
16. Service的onStartCommand有几种返回值
17. Service的onRebind什么情况下执行
18. Handler防止内存泄露
19. IntentFilter的匹配法则
20. Fragment与Activity传值
21. Fragment 生命周期

img

22. Fragment的add和replace的区别 //replace==remove|append
23. Fragment如何实现Activity栈的压栈和出栈
24. 什么情况下造成内存泄露
25. 图片过大导致OOM
26. SoftReference跟WeakRefrence的区别
27. dp与px
28. 设置布局为一半宽、高
29. 多分辨率支持的清单文件配置
30. Android的事件分发机制

img

31. ArrayList和LinkedList的区别
32. LruCache
33. 什么是ANR,如何规避
34. 描述Service的启动方式
35. Android有哪几种布局

img

36. HashMap、HashTable的区别 //从线程安全性、速度
37. 红黑树
38. Handler Looper 工作原理
39. Listview的几种adapter介绍
40. 如何在ListView间添加分割线
41. LinkedHashMap 源码解读
42. Drawable转Bitmap
43. Layout_weight
44. android:layout_gravity和android:gravity的区别
45. 如何重用布局
46. 使用merge减少include布局所造成的布局层次
47. 如何优化布局

img

48. android:layout_gravity的使用规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值