2020年Android开发最新整理阿里巴巴、字节跳动、小米面经,你不看看吗?

简介: 前言2020年是转折的一年,上半年疫情原因,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一份工作,很多需要大厂面试经验和大厂面试真题的小伙伴,想提前准备刷下题。接下来分享一份我的字节跳动、阿里巴巴、百度、小米等大厂面试经验和总结。(文末附真题解析大全)

前言

2020年是转折的一年,上半年疫情原因,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一份工作,很多需要大厂面试经验和大厂面试真题的小伙伴,想提前准备刷下题。接下来分享一份我的字节跳动、阿里巴巴、百度、小米等大厂面试经验和总结。(文末附真题解析大全)


阿里(被拒)

字节跳动(offer)

小米(offer)

手百 (offer)


阿里巴巴

面试问题还记得一些,一部分已经忘记了,为了防止再忘记,所以写出来。

1:你是如何理解Android操作系统的。

2:是否熟悉framework层,如果熟悉,那就对framework做个简介。

3:是否熟悉多线程,如果熟悉,介绍下线程。

4:对象锁和类锁是否会互相影响,会举例子让你判断锁的使用是否恰当,并说出原因。

5:是否熟悉Lopper架构,如果熟悉说下其原理,如果你自己实现,你会怎么实现。这里主要考察阻塞消息队列原理,和其变形。

6:自定义控件原理,及消息分发流程。

7:binder工作原理。

8:ActivityThread,Ams,Wms的工作原理。

9:如果工作中需要修改framework,你如何寻找切入点。


电话面试就这么多内容,自我感觉给回答打了75分,然后就是等通知;又隔了两天,阿里的HR打电话让我去指定地点面试,心里有点紧张,因为想给马云打工的人太多,竞争激烈程度可想而知


小米

一面、二面

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.判断链表是否成环,找到成环的交点。


字节跳动面试

一面

1:插件化。启动activity的hook方式。taskAffity。


2:okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称


3:handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。


4:阻塞是怎么实现的?为什么不会阻塞主线程?


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:三色球排序

一面为什么工作一年就想换工作?onTouchEvent/onTouchListenr.onTcouchEvent/onClickListenrhashmap的原理?java的hashcode和equals的区别java的gc了解多少?kt的伴生对象是饿汉模式还是懒汉模式?handler.postDelayed的原理ANR怎么产生?怎么捕捉?智力题:桌子上有101块饼***拿先手,他拿后手,你需要怎么赢tcp 三次握手/四次挥手, 为什么要三次握手,四次挥手?内存泄漏是什么?怎么找?算法题:斐波拉契数列,递归的方式怎么优化?


二面手淘这种大型app是怎么迭代起来的?你对小程序的原理了解么?v8binding怎么做?你项目的价值是什么?图片缓存怎么做?你要设计一个图片缓存框架怎么搞?lrucache怎么实现?为什么是o(1)的时间复杂度?voliate 关键字解释下?voliate 关键字不能实现什么?https解释下常见的对称加密算法和非对称加密算法有哪些?让你设计一个打点系统怎么做?如果进程被杀死或者切换后台,数据如何保存丢失?你怎么设计埋点系统一个线程模型?快速排序?快速排序是稳定的么?如何实现一个快速排序的稳定性?minstack怎么设计?kotlin和java混用有哪些问题?设计一个数据结构,微博里面有人发了文章怎么实现?关注怎么实现?微博里面有人发了文章,关注的人如何获取最新的10条?如何获取关注的人的文章的最新1000条?设计一个高效的算法


三面你为什么选择换工作?你组里面的人都怎么样?你怎么解决项目中的难点?你有工作中遇到过哪些比较麻烦的地方?你平时怎么学习的啊?你除去学习之外都看什么书?


最后附上我搜集整理的各大厂面试真题解析

Android大厂面试真题


面试心得

1.准备要充分,知识面要尽量的广,同时深度也要够。


2.面试安排上,如果不着急,尽量给自己留多时间,两天一家,及时做总结和补充。


3.心态要放平,当做一次技术交流,面试要看一部分的运气,也要看一些眼缘,有的面试官一张嘴你就能感觉到你这次面试完了。想去的公司没有面试好,不要气馁,继续加油准备。


4.简历投递方面,拉勾上投了很多经常不匹配,可能是我学历问题(自考本),有一些打击自信心,如果有同样感受的,不妨换BOSS或者其他平台。避免打击自信心。


5.写简历一定要体现自己的优势,最好能体现类似于,用到了什么技术,解决了什么问题。简历上写到的一定要胸有成竹。


6.类似于你的优势是什么,你觉得你项目中做的比较好的地方有哪些,你能给公司带来什么,这种问题心里要先想一些,免得临场发挥容易紧张说不好。


7.我所经历的面试,一般技术面最少是两轮。如果一轮后让你走了,而你还自我感觉良好,那我觉得你有必要回顾一下面试内容,并一条一条找找该问题的相关内容,大部分问题就在于你没有答到点子上,可能是深度不够,也可能是扩展不够。继续加油。


闲聊

现在大厂面试问的的确比较多,要求也挺高的,行情不好,薪资也不好要,所以心态一定要放好,找好自己的定位,心态一定要好。


面试之后要尽量做到总结,从我最开始没什么准备就出去大厂面试,被打击一通之后,总结了七八家面试题,会发新面试问到的都是那些知识点,可能角度不一样,但是你只要深度够,他怎么问,你基于原理来回答,基本上都没差,从签了赔偿协议以后出来面试,连续四家公司都走到了HR面,可以说面试的感觉上来了。前面的总结积累终究没有白费。


在写这篇文章之前,我专门看了下我之前收藏的别的公号上发的面试题,很全,我都有点不想写这篇文章了。但是想了下我这几个月听到要裁员开始面试,到第一批没被裁,第二批裁员迟迟不来。到第二批来的时候主动申请被裁。中间面试被打击,失落,看到新闻那那都在裁员,到现在面试整体感觉还不错。还是想分享一下自己的心里路程,想告诉大家,裁员别慌,做自己该做的,其他自己决定不了的,先放一放,心里列一个123,一条一条来。


可以看到我在上面推荐了很多书籍,而且JAVA部分时分块来了。是因为当我看到很多面试题,针对题来的时候,题会很多,而且有时候你会觉得你的题都会了,但是面试的时候还是面不好,说明你的知识并不扎实。或者你知识会了这个题,并没有融会贯通,所以在JAVA部分我分大块来描述,而且针对每一块,我都有推荐一本相关的书,你可能不需要都看,可以针对性的看。而Android部分时详细的知识点,这些知识点我希望的是,能够深入研究。而推荐的书籍,书中的部分都有一些相关的知识点,大家也可以选择性的看,当然论坛,博客都是知识的来源,大家做好知识点深度和广度的基类就行了。


最后,虽然裁员的很多,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。


现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。如有需要获取资料文档的朋友,可以[点击我的GitHub]免费获取!


相关文章
|
6月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
843 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
315 0
|
6月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1089 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1008 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
775 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
7月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
866 6
|
9月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
372 0
|
9月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
589 11
|
10月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
442 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
3759 77
下一篇
开通oss服务