算法面试,Android面试题收集-2018,2019

> 算法面试

LeetCode javascript solutions- https://github.com/BaffinLee/leetcode-javascript
Quicksheet for Algorithms- https://github.com/algorhythms/Algo-Quicksheet
我的 Python 版本了:https://github.com/kingname/LeetCode

分类 - Algorithms- https://leetcode-cn.com/problemset/algorithms/
我把所有做题的代码都放在 github 上以供参考。JS代码:
项目地址:https://github.com/violetjack/LeetCodeACByJS
题目地址:https://leetcode.com/problemset/top-interview-questions/

-- LeetCode,Java版本
Java工程师LeetCode刷题必备。主要根据LeetCode的tag进行模块划分,每部分都选取了比较经典的题目,题目以medium和easy为主,少量hard题目- https://github.com/h2pl/leetcode
LeetCode详细题解-Java版- https://blog.csdn.net/love905661433/article/details/84980135
LeetCode刷题指南(Java版)- https://blog.csdn.net/a724888/article/details/81389292

-- 面试:
  Android 四大组件相关的题目、常见控件和布局的题目、Android Framework相关的题目、Kotlin的题目、JNI的题目、设计模式的题目、React的题目、客户端架构的题目、前后端通信的题目、后端的题目、音视频的题目、Gradle的题目。

一年Android工作经验,今日头条 阿里 百度 网易 美团 小米 快手面经- https://blog.csdn.net/a296777513/article/details/73610719
三年开发经验,从抖音离职后,拿到Airbnb、快手、小红书、猿辅导等15家公司的offer- https://www.jianshu.com/p/8a6951b0d0ee

  在字节跳动的两年时间中见证了抖音从百万日活到2.5亿、团队从10人到100多人的过程,技术上不同时期的选型以及迭代、沉淀和更替。项目上经历了一个工程到模块化再到组件化最后插件化,深刻理解项目不同阶段和不同体量的时候技术框架的选型。流程上不同阶段不同的方案,一直在探索最大的效率的协同开发。产品上从不断试错到稳步发展的过程,也就是数据驱动业务的过程。
  跳槽的成本其实是挺大的,在一家公司积累的不仅仅是人脉还有对当前行业以及业务的熟悉度,新进入一家公司,一切需要从头再来,需要快速的证明自己,尤其是技术人员,还有就是对新环境和代码的熟悉,这些都是成本。

  职业规划,作为技术人员,我大概总结了下面三个方向,其实哪个方向都是大有可为,关键还是要看自己:
1.技术经理;2.架构师;3.专项领域的专家;
  明白“面试造火箭、进去拧螺丝”的道理。
  对薪资、平台、成长排了个序(自己的观点)
1~3年,平台>=成长>薪资;
3~5年,平台>=薪资>=成长;
5~10年,平台=薪资>成长(这个阶段也可叫做规划);

老套路LeetCode +《剑指offer》。梳理一个自己的知识体系,将一个一个知识点形成点再到面。很好的背景(学校或者公司)。

  工作经历:毕业后待过哪些公司,一般是倒序,项目尽量精简明了,可以参考SMART原则
  专业技能:自己熟悉的一些技能,这个为什么我写到最后,因为对于工作三年的同学来说,面试官更加注重的是你的项目经历,大部分面试都是看你的项目经历来提问。
  互联网并不是寒冬,只不过是更加理智,对所有的面试者来说要求的更高,所以我们更加要注重自身能力的培养,这并不是说我们要全身心的投入到刷算法,背理论知识等,我们更加注重自己的理论知识怎样能够为公司、产品带来更大的价值,从软实力方面来说,不仅要把事情做好,更要做好向上管理和向下管理。个人建议:想好为什么要跳槽,无脑跳是最不好的情况,如果一定要跳槽,最好的情况是骑驴找马,不要裸辞,跳槽需谨慎!!跳槽需谨慎!!跳槽需谨慎!!

程序员简历模板系列- https://github.com/geekcompany/ResumeSample

架构的考虑和知识的广度以及自己的思。

OpenGL一些知识,顶点着色器、片元着色器的工作原理,什么是VBO(这个没想起来),以及shader的一些简单问题。


alpha视频的解决方案,mp4播放alpha视频实现的原理;mp4实现alpha通道的原理;字节码注入相关知识,transform优化,mp4礼物实现等;
从桌面点击icon图标开始,整个启动activity的启动过程;
插件化的原理,以及hook点,大概有两个

SurfaceView和TextureSurfaceView的区别;
 
-- 能去大公司还是尽量去大公司,原因我总结了以下几点:
 镀金,这一点我相信大部分同学都是赞同的,我就不赘言了。
 知识的深度和积累,在大公司你能学到的东西更深和更加系统,而且可以有时间自己去思考和学习,尤其对于工作时间不长的同学。
  和优秀的人一起工作,大公司碰到优秀同事的概率更大,像我这样的普通人其实都是在模仿和学习,正是由于身边有了优秀太多的人,才会有危机感,才有机会跟着他们去学习,学习他们怎样学习、怎样思考问题甚至怎样为人处世。
  网上说一个人要有一些成就,需要具备下面几点,我觉得非常的对:你自己要行;有人觉得你行;觉得你行的人也行;

2年android的求职历程- https://juejin.im/post/5d0110a6f265da1b80203eb2
  对面试者的要求更高了,特别是性能优化这块的,基本都会问到,然后就是一些源码级别的问题,也会涉及到一些项目架构,思想这一块,也是需要自己慢慢沉淀的东西,这里要说一点,自己简历上面写的东西,一定要能兜得住,就算有些问题没有回答好,可以大概说下自己的想法,可能有些问题就是没有答案的。

-- 2017年Android曲折的求职之路(已经结束)- https://www.jianshu.com/p/ccbfd77c6a25
  线程,线程池,handler,Looper源码层,activity源码,四种启动模式,生命周期,View的绘制流程,自定义view,手势传递问的最复杂也最多
还有一些开源项目相关的问题吧 okhttp,glide,eventbus相关的;
  内存泄漏,内存优化还有View的过渡绘制这一块的东西,还有就是问了问图片开源库Picasso v/s Imageloader v/s Fresco vs Glide 区别以及如何去选择吧,还有eventbus的源码以及注解的优点;
  项目整体的流程,整体架构设计模式还有业务这块的详情,基本都是围绕做的项目这块的技术点来的涉及的知识点也基本涵盖了目前比较流行的开源组件,还有会问一些关于同类框架之前的区别与对比:比如volley与okhttp,图片框架,数据库greenDao,realm,litepal等等性能方面的问题;
  解决问题的能力,会问擅长哪方面(Ui还是业务?)项目难点等等。视频剪切,裁剪之类。

  Android面试整体是对计算机本源思想、实战应用和个人思维、潜力的综合性考查~。侧重考察基本的计算及原理和Android基础机制,以及对做过项目的个人探索和理解深度;
  自我介绍:我具体怎么答的略过,总之注意几个点:说简历上没有的、有亮点的、跳槽原因等,从各个点上尽力彰显自己优势、技术特长

ByteDance Android 高工面试记- https://mp.weixin.qq.com/s/MRLn5xIVvCbKfc-IgX6tcQ

-- 基于“把点开活”的面试理论- https://blog.csdn.net/GitChat/article/details/82971054

 首先,写一份漂亮的简历有助于提高获得面试机会的概率,并且也会给面试官良好的第一印象;
 其次,不打无准备之仗,如果你不是技术大牛,你很难凭借你的 [Raw ability] 来通过面试。面试前的准备,包括几个
方面,比如个人精神风貌的打理、对目标公司和目标岗位的提前了解、岗位所需技能的学习和准备等; 
 然后,面试技巧篇,如何和面试官更好地沟通,有哪些误区?

1、《Android开发艺术探索》—— 高级Android开发进阶必备
2、《剑指offer》—— 基础必备

例举下一些面试中常考的问题:
 1、网络通信方面,一些基础的协议概念。比如TCP的握手挥手问题,Http和Https的区别以及Https传输过程中用到的加
密方式,Http1.0、Http2.0和SPDY之间的区别,Http2.0做了哪些优化等。
 2、Java方面的一些基础问题,比如HashMap的原理以及HashTable的区别、Android方面的SparseArray的实现、
ArrayList和LinkedList的实现原理等等。
 3、线程方面的,比如线程的同步机制、线程的几种状态、锁和volatile、线程池的使用和管理、甚至到AsyncTask的源
码以及在不同版本的变化。
 4、Jvm虚拟机这一块的内容,比如执行过程、JMM模型、java的Gc回收原理、类加载器等等。
 5、数据结构和算法方面,这个没什么好讲的,就是拼基础,把基本的数据结构和数组字符串方面的算法多刷一刷,毕竟
面试一般面不到太难的,强烈推荐去leetCode刷题,每天限定任务必须完成多少。
 6、Android方面基础知识点,就是四大组件。关于Activity的启动流程和启动模式可以说是必须掌握的,中间牵扯到进
程间通信,所以关于binder跨进程通信这方面的知识点也是需要深入了解。
 7、Android的Handler可以说是Android通信的核心,所以关于这块的原理简直是基础必备。但是需要注意的是Handler中
有牵扯到ThreadLocal的使用,所以关于ThreadLocal也需要看和理解下。还有HandlerThread和IntentService的使用等等

 8、对于系统服务的了解,比如ActivityManagerService、WindowManagerService和其他各种系统服务的过程,多了解多
加分。关于跨进程通信binder这块的知识点建立在理论上的会比较多,但是别担心,可以在理解了一遍之后去看AIDL服务
,根据AIDL可以更好的理解binder的使用。
 9、还有就是关于View,比如自定义View的绘制,SurfaceView的原理,view的onMeasure、onLayout和onDraw的方法执行
意义等。还有关于手势事件的分发机制和滑动冲突的处理。其他的一些系统常用控件的源码分析也很必要,比如ListView
和RecyclerView的区别缓存机制、viewPager的页数缓存实现原理等等。
 10、剩下的基本功就是性能优化方面了,各种死丢丢(AS)工具的使用比如Android Profiler, Lint,查看ViewTree啊,
还有MAT啊,LeakCanary啊(这个的实现原理能搞懂最好)等等。布局的优化和内存泄露的查找,大图片的处理。对了,
还有图片的处理和图片框架的缓存原理包括LruCache的实现原理,和DiskLruCache、列表的优化方案等等。
 11、然后就是关于你项目中使用到的一些开源库,关于你用到的开源库,一定要深入到源码去理解其中的实现方案。我
拿Retrofit打比方,大概需要掌握到的深度是Retrofit的设计风格、Restful Api的概念、Retrofit核心实现方式动态代
理,优缺点(比如动态代理不能代理抽象类,和用到了反射),如何优化(比如CgLib,和依赖注入的方案)。这个其实
就是考核你对技术的研究深度到底到什么程度。所以你项目中使用到的技术一定要深入了解,大厂是不需要知其然不知其
所以然的人。
 12、关于数据库,分享一个失败的案例,就是我个人曾经把ORM的概念搞混淆导致被刷掉,这个是人生中的奇耻大辱,特
此记录。
 13、关于项目开发的整体架构的理解,比如MVC、MVP和MVVM。关于市面上主流的插件化和组件化开发的设计思想和实现
方案的理解等。
 14、此外,如果你会一些其他的开发方式或语言也会加分不少。比如Kotlin,Js,ReactNative或者Weex等等。

 一般面试官都会让你先来个自我介绍,可以介绍下自己的学习经历和工作经历。在项目中担任的角色和从事的工作。然
后会侧重点让你讲一个你的代表作和用到的技术,然后根据你讲的技术对你深挖。也会问到你项目中碰到的难题和问题是
如何解决的,这个就是考验你解决问题的能力。最好可以提前准备好一两个经典的案例到时候好有的讲。
 其次就是沟通过程中不要太紧张,尽量让自己充分的思考,把自己所会的和能联想到的用较好的表达方式告诉面试官,
让面试官可以走进你的思考方式中。一个拥有好的沟通和表达的程序员会更加受到面试官的喜爱。
 如果你的职业技能满足了面试岗位的需求,剩下的面试官会关注你对自己的职业规划和想法。切记不要好高骛远,一山
更比一山高。
  低调做人高调做事更符合我们程序员的性格,对技术的渴望和追求不断提升自我才可以让你在这个专业领域走的
更远。

> Android面试题(201803面试准备已经启动,试题收集)

对话何俊林:腾讯百度华为搜狗和滴滴面试题汇总- https://www.nowcoder.com/discuss/20267?
type=0&order=0&pos=4&page=0

2018年Android面试题含答案--适合中高级(下)- https://www.imooc.com/article/44756

Android面试总结-中高级- https://blog.csdn.net/yiluyoufeng/article/details/50883595
Android2017-2018最新面试题(3-5年经验个人面试经历)- http://blog.csdn.net/huangqili1314/article/details/72792682

Android高新面试题2017汇总(带答案)- https://www.jianshu.com/p/928dbf20d927

Android 四大组件面试技能树梳理- https://blog.csdn.net/liu3364575/article/details/80208293

浅谈Android进阶之路(高级进阶)- http://blog.csdn.net/xJ032w2j4cCjhOW8s8/article/details/79441532

一份年薪30万的Android面试宝典,附答案- https://mp.weixin.qq.com/s?__biz=MzI0MjE3OTYwMg==&mid=2649551028&idx=1&sn=30d1d1c022aca02d5c7d8dc4b6b89c26&chksm=f1181bc9c66f92df9168cd3dafabaa4d8a5c96aa423ea311f52539e0ecfe7d61ba96d388fe8e&scene=21#wechat_redirect

Android 名企面试题及涉及知识点整理- https://github.com/helen-x/AndroidInterview

企业最关心的三种能力无外乎「学习能力」、「解决问题的能力」、「团队协作能力」。

> 面试题:
HTTP面试题都在这里- https://www.jianshu.com/p/fca985f0b40d
阿里春招Android面经- https://mp.weixin.qq.com/s/KwWbbZt3Rp9Mghj8pFJtYQ

2018Android大厂面试经验- https://www.jianshu.com/p/7b35a47822f8

-- 面试题:

view的工作原理及measure、layout、draw流程,要求了解源码
怎样自定义一个弹幕控件?
如果控件内部卡顿你如何去解决并优化?
Invalidate、postInvalidate、requestLayout应用场景
java内存模型,五个部分,程序计数器、栈、本地栈、堆、方法区。
类加载的过程,加载、验证、准备、解析、初始化。每个部分详细描述。
加载阶段读入.class文件,class文件时二进制吗,为什么需要使用二进制的方式?
验证过程是防止什么问题?验证过程是怎样的?加载和验证的执行顺序?符号引用的含义?
准备过程的静态成员变量分配空间和设置初始值问题。
解析过程符号引用替代为直接引用细节相关。
初始化过程jvm的显式初始化相关。
类卸载的过程及触发条件。
三种类加载器,如何自定义一个类加载器?
双亲委派机制。
JVM内存分配策略,优先放于eden区、动态对象年龄判断、分配担保策略等。
JVM垃圾回收策略,怎样判对象、类需要被回收?
四种垃圾回收算法标记-清除、复制、标记-整理、分代收集。
JVM中的垃圾回收器,新生代回收器、老年代回收器、stop-the-world概念及解决方法。
四类引用及使用场景?

--爱奇艺
Android消息机制
Android View绘制流程,当一个TextView的实例调用setText()方法后执行了什么
Android dalvik虚拟机和Art虚拟机的优化升级点
Android屏幕渲染机制
热修复的原理,你都了解过哪几种热修复框架
OkHttp的原理
Android 线程池的实现原理
JavaGC机制
HashMap的实现机制,怎么样
HashMap线程安全
可重入锁的实现,公平锁非公平锁都是什么定义?
都用过那些常用的数据结构,说说对树的了解?
Activity启动模式,allowRepeate的特点和栈亲和性
WebView优化
有没有Jni使用经验
有使用过RxJava吗?
说说你对设计模式的理解,开发过程中主要用到了哪些设计模式?
快排写一下,动态规划了解吗?

--小米
冒泡排序的链表实现
写个快排
写个单例模式
Activity启动模式
异常生命周期
从点击应用图标到进入应用,Android系统都做了哪些工作,期间涉及到的进程切换有哪些?
说说你了解的IPC方法
说说Binder的大体实现
怎么控制另外一个进程的View显示
广播中怎么进行网络请求
说说Android中线程池的实现
HashMap如果Hash冲突了怎么解决?
双线程通过线程同步的方式打印12121212....

--腾讯
HTTPS是怎么实现的?
Android事件传递流程和OnTouchListener的关系
Activity启动模式
Android线程池实现原理
双指缩放拖动大图
客户端网络安全实现
Webview优化
Android应用保活
RemoteViews实现和使用场景
RecyclerView绘制步骤和复用机制
Binder的大体设计模式
Activity遵循什么设计模式
EventBus源码解析,遵循什么设计模式
Handler为什么会发生内存泄漏
Java内存模块分区和GC机制,GC算法有哪些
Finalize机制
强引用 弱引用 软引用 虚引用的区别和使用场景
LeakCanary的使用和实现原理
介绍一下你在开发过程中使用到的设计模式
快排
对服务器众多错误码的处理(错误码有好几万个)

--阿里
Android消息机制
Android事件传递流程
Android View绘制流程
Activity启动模式
Android IPC机制
Android线程池设计原理
EventBus源码和设计模式
Android应用保活
Android UI优化
Android启动优化
快排 
堆排 
单例
进程线程在操作系统中的实现
HTTPS的组成是什么?
ClassLoader的双亲委托
Android中的ClassLoader
有过Jni使用经验吗?
有过跨平台开发经验吗?

--今日头条
视频加密
Android Native Crash
视频组成
播放器原理

--共同问到的
为什么离职
开发过程中遇到最深刻的BUG是什么
当你的开发任务很紧张,你怎么去做代码优化的?
怎么和你的同事沟通

你对某某某互联网发生事情的看法?(直播答题等等)

-- 2018Android面试经历- https://blog.csdn.net/xJ032w2j4cCjhOW8s8/article/details/80603663
Q1:ListView和RecyclerView的使用,就问我它们有什么区别?
Q2:既然RecyclerView在很多方面能取代ListView,Google为什么没把ListView划上一条过时的横线?
Q3:你用过MVP,那你知道Dagger2吧,介绍下吧?
Q4:HashMap的内部实现原理?
Q5:Activity生命周期,有哪些启动模式,以及应用场景?
Q6:你用过AsyncTask,那你跟我说说AsyncTask的内部实现原理?
Q7:AsyncTask内部维护了一个线程池,是串行还是并行,怎么维护的?
Q8:那你说说线程池的四种初始化吧?
Q9:你用过MD,你知道怎么定义一个Behavior吗?
Q10:RecyclerView的拖拽怎么实现的?
Q11:写一个SingTop,有哪三个条件?
Q12:一个按升序排列好的数组int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},输入一个x,int x = 31,在数据中找出和为x的两个数,例如 9 + 22 = 31,要求算法的时间复杂度为O(n);
Q13:如何向一个数据库具有int类型A,B,C,D四列的表中随机插入10000条数据?如何按升序取出A列中前10个数?
Q14:service两种启动方式有什么区别?
Q15:说说三级缓存、Handler机制 ?
  ListView采用的是RecyclerBin的回收机制在一些轻量级的List显示时效率更高。ListView和RecyclerView的区别、缓存机制、Android MVP+Retrofit+dagger2+RxAndroid框架等等!。
  文件读写就要考虑到效率问题!在数据库中提高效率用到什么,是事务!如果一条条插入,其实每次插入都会维持一个事务,也就相当于文件的打开和关闭,10000次的打开和关闭是很消耗性能的,所以要在插入前使用BEGIN TRANSACTION开启事务,再10000条数据插入完成时用END TRANSACTION结束事务,这样就相对于文件只打开了一次,10000条批量操作完后,再关闭文件!”

  个人的职业规划1、以Android技术为基础深入,再学前端,再扩展到Java后台,做到一个全栈工程师  2、向Android智能硬件,NDK开发转型。

----------------------

2018年Android面试题整理- https://blog.csdn.net/YECrazy/article/details/79482136
2018年Android面试题含答案--适合中高级(下)- https://www.cnblogs.com/huangjialin/p/8657696.html
Android2017-2018最新面试题(3-5年经验个人面试经历)- https://blog.csdn.net/huangqili1314/article/details/72792682
面试题 - http://www.360doc.com/content/17/1114/17/43284313_703803617.shtml#
2018Android面试题和答案- https://blog.csdn.net/wds1181977/article/details/79412605

-- 中高级的安卓开发要去了解!
1.基础知识 – 四大组件(生命周期,使用场景,如何启动)
2.java基础 – 数据结构,线程,mvc框架
3.通信 – 网络连接(HttpClient,HttpUrlConnetion),Socket
4.数据持久化 – SQLite,SharedPreferences,ContentProvider
5.性能优化 – 布局优化,内存优化,电量优化
6.安全 – 数据加密,代码混淆,WebView/Js调用,https
7.UI– 动画
8.其他 – JNI,AIDL,Handler,Intent等
9.开源框架 – Volley,Gilde,RxJava等(简历上写你会的,用过的)
10.拓展 – Android6.0/7.0/8.0特性,kotlin语言,I/O大会

 -- 横竖屏切换时Activity的生命周期变化:
1.如果自己没有配置android:ConfigChanges,这时默认让系统处理,就会重建Activity,此时Activity的生命周期会走一遍。
2.如果设置 android:configChanges="orientation|keyboardHidden|screenSize">,此时Activity的生命周期不会重走一遍,Activity不会重建,只会回调onConfigurationChanged方法。

3、说说你对volley这个框架的理解
4、view的绘制流程
5、wait和sleep的区别。
6、动画有那些,怎么实现?
7、在不知道json的数据结构,怎么解析json?
4、谈谈你平时在项目怎么加密的?说说Rsa,md5的理解
5、说说对反射的理解。
6、有若干个线程,怎么让它们按顺序执行?

3、观察者模式是干嘛的?手写个出来
4、数据库怎么升级版本?
5、view的事件分发机制的理解,出现滑动冲突怎么办?
5、线程T1,T2,T3,T5,T6,怎么按顺序执行?
6、跨进程通信有哪些?AIDL能传对象吗?说一下binder的工作机制?
7、说一下你了解的一些图片开源框架?怎么选择?
8、项目安全方面,你们是怎么做的?

2、说一下你项目中做了那些?主要负责什么?
3、activity启动模式有哪些?使用场景?
4、string,stringBuffer,stringBuilder区别?
5、wait和sleep区别,怎么使用?线程冲突了怎么办?
6、什么是死锁,怎么产生,产生条件,怎么解决?
7、有A、B、C、D、E这几个线程,有那些方法让他们按顺序执行?区别在哪?使用场景?
8、view的绘制流程
9、网络请求的框架了解过吗?对比一下他们的区别。
10、说说Glide的源码?

3、view的绘制原理。
4、手写冒泡、插入算法。有什么改进的地方吗?
5、平时遇到什么难题呢?怎么解决,举个例子?
6、线程相关
7、进程保活?
8、hashmap原理,冲突,解决

2、说说你对广播的理解;
3、自定义view有哪些。
4、跨进程通信有那些方式,区别?SharedPreferences能跨进程通信吗?为什么?
5、项目你是怎么优化的,线程是怎么优化的?线程池有那些?区别在哪?
6、多个线程访问一个文件,怎么保证线程安全?
7、平时有了解过源码吗? 我特么嘴贱,和他说Glide源码,说到一般,自己都忘记了....

2、项目是怎么优化?从那些方面
3、用过那些加密算法?举个例子?Rsa的计算原理?
4、String,StringBuffer,StringBuilder区别?(这个我发现很多都喜欢问)
5、多线程同时存取文件,怎么保证线程的安全?

  http 的session&cookie的区别:
1.session 在服务器端,cookie 在客户端(浏览器)  
2.session 默认被存在在服务器的一个文件里(不是内存) 
3.session 的运行依赖 session id,而 session id 是存在 cookie 中的, 也就是说,如果浏览器禁用了
cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id) 
4.session 可以放在 文件、数据库、或内存中都可以。  
5.用户验证这种场合一般会用 session 因此,维持一个会话的核心就是客户   端的唯一标识

  产生死锁的四种条件:
1.互斥条件:一个资源每次只能被一个进程使用。
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

AIDL机制
项目:拉活怎么做的

应用安装过程
资源文件——/data/data/包名
AndroidManifest.xml——PackageManager
dex——Dalvik、ART区别

职场规划
自我介绍

软引用、弱引用区别
垃圾回收
多线程:怎么用、有什么问题要注意;
Android线程有没有上限,然后提到线程池的上限
JMM

OOM,内存泄漏
ANR怎么分析解决
界面相关:
LinearLayout、RelativeLayout、FrameLayout的特性、使用场景
如何;实现Fragment的滑动;
ViewPager使用细节,如何设置成每次只初始化当前的Fragment,其他的不初始化;

ListView重用的是什么
进程间通信的机制
AIDL机制
AsyncTask机制
如何取消AsyncTask
序列化
Android为什么引入Parcelable
有没有尝试简化Parcelable的使用
设计模式
 
常用的有哪些,答单例、Builder、观察者;
观察者模式用的时候要注意什么:内存泄漏;同步问题

 如何实现观察者模式的同步;
单例模式同步问题;懒汉和DCL的比较

ndk;
C++崩溃信息如何查看。

Android面试题,了解一下?- https://mp.weixin.qq.com/s/HwOXk5Llm6PzmTX5eOfFng
Java SE 工作日每日一题推送历史记录- https://mp.weixin.qq.com/s/JcnSOGKQlDgaTTFKZFbXnA
BAT大厂Android面试题汇集,以及常用的Android开发的一些技能点- https://github.com/AweiLoveAndroid/CommonDevKnowledge
BAT大厂面试题整理- https://mp.weixin.qq.com/s/p3l9wr4DX976Lr62-dYe8w
Android(2017-2018)BAT面试题整理(java篇,含答案)- https://blog.csdn.net/huangqili1314/article/details/79448187
2018安卓面试经历- https://blog.csdn.net/lzq520210/article/details/79481086

你可能感兴趣的:(技术人生(职业与面试))