面试经历
1.小米
一面、二面面试题**
1.介绍一下binder和原理
2.measure layout draw流程,滑动冲突
3.常用的多线程工具类。blockingqueue ,concurrenthashmap,信号量,countdownlatch,cyclicbarrier,exchanger等,stringbuffer
4.stringbuilder 和stringbuffer区别
5.lock和syncrognized原理区别,适合什么场景。
6.实现生产者,消费者
7.handler原理,是如何实现延时的。
8.一个activity启动另外一个activity的生命周期。
算法题:
1反转链表
2.归并排序
3.快速排序
4.feiboqiena数列
5.二分查找
6.两个队列实现栈
7.两个栈实现队列
8.判断链表是否成环,找到成环的交点。
最终顺利通过hr面拿到offer。
2.阿里
这次面的是一个阿里钉钉面经如下:
**阿里一面(面试时长80min) **
-
自我介绍,对自己项目的介绍,架构图呈现
-
因为说自己以后的发展方向是音视频,所以问了我用过哪些现有框架
-
项目中的一些优化问题,MVC -> MVP,Handler的内存泄漏情况分析等,对MVP和MVVM的理解。
-
项目中的第三方库选择的问题,因为简历中写了我对第三方库选择的问题,比如选ObjectBox和greenDao的问题,图片加载框架问题
-
HashMap和HashTable,引申ConCurrentHashmap的深入,version1.7和1,8的区别,以及高并发下HashMap发生的问题
-
四大启动模式,以及场景对应
-
Handler的机制介绍,不存在消息时的IdleHandler的运作机制,为什么不能在子线程初始化问题
-
设计模式中的单例介绍,使用场景(Okhttp的Seesion存储等等),在线编写
-
快排算法
-
OkHttp的源码分析,及整体架构的流程图绘制
-
四大组件的完整介绍,及深入,答了IntentService、LocalBroadcast
-
四大引用的问题和MVP框架相结合进行回答
-
网络中的响应码对大体进行回答,具体回答了200、404、500、304等
-
View绘制流程问题,如何不使用xml,来实现中间位置的定位
-
事件分发机制流程讲解,以及如何实现单击事件和长按事件的判定
-
关于为什么选用mqtt协议的问题,优势,原理等等(没答上来,只说针对性做过测压,以及oceanlink和mqtt的对比)
阿里二面
-
自我介绍,优缺点的,以及未来希望的发展方向
-
目整体介绍,如何做到分压啊之类的问题
-
如果给我阿里、腾讯、头条、谷歌的offer的一个选择(不掺杂地域性的问题),首先直接否定了google我就的一个企业的商业模式进行分析。
-
我对钉钉这个产品的理解,我的回答是就的是钉钉前身的对标项目微信,已经后期转型的商业模式作出的分析,最后给出的我的结论是一个企业性质的办公软件
-
给出了钉钉一个mac平台的关于共享屏幕的耗CPU的问题
-
让我提问,提的是关于音视频发展方向的问题,具体是一个发展空间。
面试很不理想,因为什么都没有准备,而且心力憔悴。面试官问的是一些基础的 Java 问题,很可惜我没怎么回答好。于是就深深的浪费了一次机会,之后和朋友提起此事,无比后悔,当时其实是可以和 HR 电话再约一个时间的
3.字节跳动
一面
1:插件化。启动activity的hook方式。taskAffity。
2:okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称
3:handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。阻塞是怎么实现的?为什么不会阻塞主线程?
5:求二叉树中两个节点之间的最大距离。
6:206含义,未修改资源是哪个,302含义,301含义
7:多进程通信问题。binder优势。aidl生成的java类细节。多进程遇到哪些问题?
8:动态代理传入的参数都有哪些?非接口的类能实现动态代理吗?ASM的原理
9:Application和Activity在Context的继承树上有何区别?二者使用上有何不同?
10:任意一颗二叉树,求最大节点距离
二面
1:设计一个日志系统。
2:内存泄露的分类。怎么查看内存泄露的问题
3:touch事件源码问题。
4:组件化的问题。module和app之间的区别。moduler通信是如何实现的。
5:native奔溃的日志采集,怎么处理?
6:注解实现一个提示功能:如果int的值大于了3需要提示。
三面
1:介绍下flutter的启动流程
2:介绍下flutter与weex的区别
3:组件化介绍一下
4:webview中与js通信的手段有哪些?
5:介绍下flutter_boost的原理
四面
1:适配器和装饰模式各自特点和使用场景
2:视频编解码是怎么做的
3:三色球排序
4.百度
1.HashMap
2.多线程相关问题(volatile、锁、CAS)
3.线程池原理
4.常用的设计模式
5.事件分发、滑动冲突解决方案
6.handler
7.进程间通信方法
8.binder原理及AIDL使用
9.性能优化及相关工具的使用
10.view的绘制及自定义view
11.Activity生命周期及启动模式应用场景
12.Activity启动流程
13.Service启动方式
14.热修复原理
15.Http与Https
16.访问一个URL过程
算法题:
1.单链表的反转
2.有一个存放电话号码的字符串数组、按相同的电话号出现频率排序
3.两数之和(LeetCode第一题)
总结:面试和必备的技能
这里只简单列举一些东西,可能不是特别全,但是却特别适用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根据公司的规模以及面试官的心情而定(哈哈哈 ,你们就自求多福吧)。建议大家还是要将下面的东西全部掌握,没事写写代码,练练手,在项目中能用到的地方一定要用,有可能会遇到很多坑,一定要自己想办法填坑,之后回忆起这段经历,肯定可以敢理直气壮的跟别人讨论。如果你说的头头是道,那么对方会先输一层,然后在心里对你佩服。
- 一般情况下第一轮都是基础面试,需要扎实的基础
- 最常用的Android 基础知识
- Java 基础知识
- 了解一些 常用东西的原理,例如:handler, thread 等
- 项目中的技术点
- 第二轮的时候需要了解更深层次的东西
- Android 事件分发机制原理
- Android 绘图机制原理
- WindowManager 的相关知识
- 进程间传输方式
- Java 内存管理机制
- 能进入第三轮基本没什么问题,但是要注意以下问题
- 该轮一般是 老大或者部门负责人,问的问题一般都看 深度与广度
- 当问及薪水的时候,要说一个合适的,小公司随意,大公司一定要慎重,当心里没底的时候,可以告诉对方,让对方给一个合理的薪资。一般都是在原工资基础之上增长,听猎头说一般涨幅都在15%-30%,超 NB 的可以要30%及以上,如果感觉自己还不错的,挺厉害的,建议最高20%,一般人就定在15% 左右最靠谱。公司内部一般有一套机制,根据公司情况而定。
- 我们的面试原则就是拿到合理薪资,得到 offer
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://i-blog.csdnimg.cn/blog_migrate/1123a6056fa26c53166e7bfc31a547c2.jpeg)
要如何成为Android架构师?
搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;
对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,希望能帮你突破瓶颈,跳槽进大厂;
最后我必须强调几点:
1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境