如果我告诉你,只需要每天这样做就能进美团,你信嘛!(开发10年程
一、前言
本人面试已经很久之前了,分享一下我做美团面试官的经历吧。
美团上海面试,2-1及以下美团是不社招的,校招和2-2~2-3社招一般是三面,格外优秀3-1及以上会加签面试。初面技术基础,二面业务感知和技术项目,技术设计等。三面 HR面。
初面一定要准备相对较多的基础知识,简历上的东西一定是熟悉的,自己的知识也不能落伍。会有一些简单的算法题。二面主要是项目设计,项目设计的背景,目标,执行中的问题,最后的结果都要非常清楚。三面 HR 面试还是比较大陆货,主要打探职级,绩效评价一个人的工作努力程度,岗位适配程度等。

二、面试题我们一般这样问
接下来我就详细说一下,面试官面试时最喜欢问的一些问题,分为Android知识点,数据结构与算法,java基础,项目相关。以及面试时大家需要注意的一些东西!
Android知识点
Android知识点,这块自然不用多说,肯定是面试的重灾区。去大公司面试都都喜欢问你源码、内部实现,这样的问题。所以,handler,asynctask这样常用的API内部原理必须会,面试官还经常问你看过哪些开源框架的源码,所以你得熟悉几个开源框架的内部实现,比如volley、retrofit、OkHttp、butterknife、glide。Android还是要做多项目积累经验。
学习方向给你们看一下精简版本了,需要完整版的可以找我分享 。由于简书限制网盘链接,需要相关学习笔记的可以复制我的GitHub地址,
下载获取你需要的学习笔记:复制下面GitHub链接即可
https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master
或者复制打开链接,群文件夹自己下载:https://jq.qq.com/?_wv=1027&k=Nf77fQ97
我免费分享给你,全套系列学习进阶视频+笔记+思维脑图

数据结构与算法
数据结构与算法这部分是我的弱项,多扯两句,这部分是去大公司面试的必问问题,博主去美团、百度面试都让算法给刷掉了,所以这块很重要,要想进大公司算法是绕不过去的,虽然Android一般用不到太多、太复杂的算法。我在面试题中,关于算法这块我也写了几个,比如排序,二分查找,面试小公司,可能会让你写个什么冒泡排序,快排,二分查找,但是进大公司面试,面试官根本不问这些最普通的面试问题,他们都会自己给你出一个题,让你写出最优算法,平时多看看《剑指offer》、刷LeetCode。
算法也是我的弱项,我就不在这里侃了。数据结构,也是很重要的!常用的数据结构(ArrayList、LinkedList、HashMap)内部实现都得知道,能跟面试官侃侃而谈,还有延伸的一些数据结构你也得有所了解,比如问到HashMap都知道他不是线程安全的,那线程安全的ConcurrentHashMap,你知道内部的机制,他是怎么来保证线程安全的前提下,最大的提高读写效率的呢?还有Android特有的数据结构SparseArray等一些原理。了解数据结构内部实现其实挺好的,对编码有帮助,为了帮助大家减少面试时收集资料的时间,我已经整理好了,需要的小伙伴自取!
<算法刷题LeetCode>

<剑指offer>

关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。目前,我手头上整理到的电子书还算比较全面,有关知识(HTTP、自定义view、c++、MVP、性能优化、NDK、小程序)有关知识《Android源码设计模式》、《Android开发艺术探索》、《Java并发编程的艺术》、《Android基于Glide的二次封装》、《Android内存优化——常见内存泄露及优化方案》、《Java编程思想 (第4版)》等高级技术都囊括其中。
电子版收录在了我的群文件夹里,
学习方向给你们看一下精简版本了,需要完整版的可以找我分享 。由于简书限制网盘链接,需要相关学习笔记的可以复制我的GitHub地址,
下载获取你需要的学习笔记:复制下面GitHub链接即可
https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master
或者复制打开链接,群文件夹自己下载:https://jq.qq.com/?_wv=1027&k=Nf77fQ97
java基础
java基础这部分很重要,这个看你基本功,去大公司面试比较注重基础,所以这部分会问的比较多,jvm问的挺多,线程池这块也是重点,还有,大公司面试还会问你并发这块的知识点,比如锁机制,一些volatile、synchronized关键字用来做什么的,内部实现原理等问题,这本字节跳动内部都在看的《JAVA核心技术》可以帮你解决以上问题,面试前一点要多刷几遍!

项目相关
项目相关的问题,这部分基本都是在二面、三面上吧,这块你就跟面试官聊聊你做的项目,用到了什么技术,怎么来解决问题啥的,这个针对自己项目来说就行,就不多说了。
《Android经典项目案例开发实战宝典》

面试我们一般这样问
(一)Android基础知识点
-
四大组件是什么
-
四大组件的生命周期和简单用法
-
Activity之间的通信方式
-
Activity各种情况下的生命周期
-
横竖屏切换的时候,Activity 各种情况下的生命周期
-
Activity与Fragment之间生命周期比较
-
Activity上有Dialog的时候按Home键时的生命周期
-
两个Activity 之间跳转时必然会执行的是哪几个方法?
-
前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
-
Activity的四种启动模式对比
-
Activity状态保存于恢复
-
fragment各种情况下的生命周期
-
Fragment状态保存startActivityForResult是哪个类的方法,在什么情况下使用?
-
如何实现Fragment的滑动?
-
fragment之间传递数据的方式?
-
Activity 怎么和Service 绑定?
-
怎么在Activity 中启动自己对应的Service?
-
service和activity怎么进行数据交互?
-
Service的开启方式
-
请描述一下Service 的生命周期
-
谈谈你对ContentProvider的理解
-
说说ContentProvider、ContentResolver、ContentObserver 之间的关系
-
请描述一下广播BroadcastReceiver的理解
-
广播的分类
-
广播使用的方式和场景
-
在manifest 和代码中如何注册和使用BroadcastReceiver?
-
本地广播和全局广播有什么差别?
-
BroadcastReceiver,LocalBroadcastReceiver 区别
-
AlertDialog,popupWindow,Activity区别
-
Application 和 Activity 的 Context 对象的区别
-
Android属性动画特性
-
如何导入外部数据库?
-
LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景。
-
谈谈对接口与回调的理解
-
回调的原理
-
写一个回调demo
-
介绍下SurfView
-
RecycleView的使用
-
序列化的作用,以及Android两种序列化的区别
-
差值器
-
估值器
-
Android中数据存储方式
(二)Android源码相关分析 -
Android动画框架实现原理
-
Android各个版本API的区别
-
Requestlayout,onlayout,onDraw,DrawChild区别与联系
-
invalidate和postInvalidate的区别及使用
-
Activity-Window-View三者的差别
-
谈谈对Volley的理解
-
如何优化自定义View
-
低版本SDK如何实现高版本api?
-
描述一次网络请求的流程
-
HttpUrlConnection 和 okhttp关系
-
Bitmap对象的理解
-
looper架构
-
ActivityThread,AMS,WMS的工作原理
-
自定义View如何考虑机型适配
-
自定义View的事件
-
AstncTask+HttpClient 与 AsyncHttpClient有什么区别?
-
LaunchMode应用场景
-
AsyncTask 如何使用?
-
SpareArray原理
-
请介绍下ContentProvider 是如何实现数据共享的?
-
AndroidService与Activity之间通信的几种方式
-
IntentService原理及作用是什么?
-
说说Activity、Intent、Service 是什么关系
-
ApplicationContext和ActivityContext的区别
-
SP是进程同步的吗?有什么方法做到同步?
-
谈谈多线程在Android中的使用
-
进程和 Application 的生命周期
-
封装View的时候怎么知道view的大小
-
RecycleView原理
-
AndroidManifest的作用与理解
(三)常见的一些原理性问题
-
Handler机制和底层实现
-
Handler、Thread和HandlerThread的差别
-
handler发消息给子线程,looper怎么启动?
-
关于Handler,在任何地方new Handler 都是什么线程下?
-
ThreadLocal原理,实现及如何保证Local属性?
-
请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系
-
请描述一下View事件传递分发机制
-
Touch事件传递流程
-
事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
-
View和ViewGroup分别有哪些事件分发相关的回调方法
-
View刷新机制
-
View绘制流程
-
自定义控件原理
-
自定义View如何提供获取View属性的接口?
-
Android代码中实现WAP方式联网
-
AsyncTask机制
-
AsyncTask原理及不足
-
如何取消AsyncTask?
-
为什么不能在子线程更新UI?
-
ANR产生的原因是什么?
-
ANR定位和修正
-
oom是什么?
-
什么情况导致oom?
-
有什么解决方法可以避免OOM?
-
Oom 是否可以try catch?为什么?
-
内存泄漏是什么?
-
什么情况导致内存泄漏?
-
如何防止线程的内存泄漏?
-
内存泄露场的解决方法
-
内存泄漏和内存溢出区别?
-
LruCache默认缓存大小
-
ContentProvider的权限管理(解答:读写分离,权限控制-精确到表级,URL控制)
-
如何通过广播拦截和abort一条短信?
-
广播是否可以请求网络?
-
广播引起anr的时间限制是多少?
-
计算一个view的嵌套层级
-
Activity栈
-
Android线程有没有上限?
-
线程池有没有上限?
-
Android为什么引入Parcelable?
-
有没有尝试简化Parcelable的使用?
二、Java面试题
三、高级开发技术面试题
四、插件化、模块化、组件化、热修复、增量更新、Gradle
五、架构设计和设计模式
六、性能优化
七、Android Framework
八、Android优秀三方库源码
九、HR面试
尾声
对于IT这行业,我只能说,别想那么多,饭是一口一口吃的,路是一步一步走出来的,你要不满足现状,而且你的城市也不能给你带来长远的发展,同时也没有好的行业来支撑你的发展或者阶段性的稳定,那么选择这行业也是不错的想法,至少能给你带来相对阶段性的稳定,前提你要学习,不学习啥也不是,不说你对代码很热爱,至少跟我一样不排斥就好。
技术这东西是长期积累下来的,不是一蹴而就的,同时也要保持学习的热情,不说每天像打鸡血似的,那有些吹牛逼了,至少出现新技术了,你要去看,去研究研究,能运用,能慢慢实践就够了,别被年龄所限制,也别被什么30-35岁转行或者裁员这那的,那不是眼前的事情,到了就再说,老话说,车到山前必有路
学习方向给你们看一下精简版本了,需要完整版的可以找我分享 。由于简书限制网盘链接,需要相关学习笔记的可以复制我的GitHub地址,
下载获取你需要的学习笔记:复制下面GitHub链接即可
https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master
或者复制打开链接,群文件夹自己下载:https://jq.qq.com/?_wv=1027&k=Nf77fQ97