共计 5967 个字符,预计需要花费 15 分钟才能阅读完成。
前言
在互联网做了几年之后,去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好,更重要的是,它是对你业余能力的背书,大厂工作背景多少会给你的简历减少几分竞争力。我本人和敌人也去过很多大厂面试过,整顿了一份面试题和面试教训分享给大家,心愿能帮忙到你们。
面试题总结
一. 数据结构与[算法]()
- 罕用的数据结构有哪些?
- 数组
(1). 如何在一个 1 到 100 的整数数组中找到失落的数字?
(2). 如何在给定的整数数组中找到反复的数字? 【 小米 】
(3). 如何在未排序整数数组中找到最大值和最小值? 【 字节跳动】**
(4). 在 Java 中如何从给定数组中删除多重复制?
(5). 大数相加【今日头条】 - 链表
(1). 那查问第一个跟倒数第二个呢?(这就不一样了,第一个间接给了头结点,倒数第二个须要从倒数第一个开始查问,走两步)【 腾讯】
(2).arrayList 底层原理【滴滴 】【 字节跳动】
(3). 如何在一次遍历中找到单个链表的中值?【中国安全 】
(4). 如何证实给定的链表是否蕴含循环? 如何找到循环的头节点? 优酷
(5). 两个有穿插的单链表,求交叉点【 华为 】
(6). 如何失去单[链表]() 的长度?【360】
(7). 如何在不应用递归的状况下逆转单 [链表]()?【 小米 】【 美团 】
(8). 怎么判断[链表]() 有环?【滴滴】 - 队列 & 堆栈
(1). 如何应用栈实现队列的性能?【 广州荔枝 】
(2). 两个栈实现一个队列【 蘑菇街 】
(3). 两个队列实现一个栈【 腾讯 】
(4). 比照一下队列和栈,以及它们底部实现【 腾讯】 - 二叉树
(1). 如何在给定的二叉树中执行先序遍历?【 百度 】
(2). 如何实现后序遍历[算法]()?【 百度 】
(3). 如何在给定数组中执行二分法搜寻?【 苏宁 】
(4). 已知前序遍历为{1,2,4,7,3,5,6,8},中序遍历为{4,7,2,1,5,3,8,6},它的[二叉树]() 是怎么样的?【58】
(5). 输出两棵 [二叉树]() A 和 B,判断 B 是不是 A 的子结构。【 爱奇艺 】
(6). 请实现两个函数,别离用来[序列化二叉树]() 和反 [序列化二叉树]()。【YY】
(7).[均衡二叉树]() 和[红黑树]()的区别?【字节跳动 】
(8). 什么是[均衡二叉树](),它有什么特色【 美团】
(9).B 树,B+ 树 - HashMap
(1).HashMap 的底层原理是什么?线程平安么?【百度 】【 美团 】
(2).HashMap 中 put 是如何实现的?【 滴滴 】
(3). 谈一下 hashMap 中什么时候须要进行扩容,扩容 resize() 又是如何实现的?
(4). 什么是哈希碰撞?怎么解决?【滴滴 】【 美团 】
(5).HashMap 和 HashTable 的区别【 小米 】
(6).HashMap 中什么时候须要进行扩容,扩容 resize() 是如何实现的?【滴滴 】
(7).hashmap concurrenthashmap 原理【 美团 】
(8).arraylist 和 hashmap 的区别,为什么取数快?【 字节跳动】 - 图
(1). 旋转输入矩阵
(2). 给定一个矩阵 int matrixAm, 每行每列都是增序的,实现一个[算法]() 去寻找矩阵中的某个元素 element.【搜狗】 - 排序算法有哪些?
(1).top-k[排序]()(堆 [排序](),位图法)【 美团 】
(2). 冒泡[排序]() 的手写【华捷艾米 】
(3). 堆[排序]()[算法]() 的手写【华捷艾米 】
(4). 椭圆形场地有两个赛道,能够同时提供两匹马较量,两匹马较量后,能够获知两匹马中跑的快的那匹马,然而没有计时工具。问题,如何最优的[算法]()(较量次数起码),获知 10 匹马中速度最快的三匹马【 阿里 】
(5). 输出一个整型无序数组,对堆[排序]() 的办法使得数组有序【阿里 】
(6). 如何应用疾速[排序]()[算法]() 对整数数组进行[排序]()?【CVTE】 - 查找算法
(1). 有序数组的[二分查找]()[算法]()【 百度】 - 串
(1). 给定一个字符串,请你找出其中不含有反复字符的 最长子串的长度。【 字节跳动】
(2). 给定一个字符串 s,找到 s 中最长的回文子串。你能够假如 s 的最大长度为 1000。 - 请写出以下算法的工夫复杂度
冒泡 [排序]() 法 插入 [排序]() 法 堆 [排序]() 法 [二叉树]()[排序]()法 - 其余算法
(1). 罕用的对称加密[算法](),有什么同?【 字节跳动 】
(2). 如何在无序(有正数)的数组中查找是否存在和为 target 的两个数组合,twoSum();【 字节】
二. Java 根底
(1). 什么状况下会产生栈内存溢出?
(2). 如果让你写一段栈溢出的代码你会什么写,一个栈大略有多大,为什么?每个线程都有这样大小的一个栈吗?【美团 】
(3).JVM 中一次残缺的 GC 流程是怎么的,对象如何降职到老年代?
(4). 介绍下 GC 回收机制与分代回收策略。
(5).Java 中有几种援用关系,它们的区别是什么?
(6).GC 收集[算法]() 有哪些?它们的特点是什么?
(7). 如何判断一个对象是否被回收,有哪些 GC[算法](),理论虚拟机应用最多的是什么 GC[算法]()?【美团 】
(8).Jvm 内存 构造说一下。
a. 形容 JVM 内存模型。【 西方头条 】
(9).JVM DVM ART 的区别【360】
(10). 形容 GC 机制。Class 会不会回收?用不到的 Class 怎么回收?【 西方头条】
三、Android 体系
(1). Acitvity 的生命周期是什么样的?
a. Acitvity 的生命周期,如何捣毁一个 Activity?【美团】
(2). Activity 的 4 大启动模式,与开发中须要留神的问题,如 onNewIntent() 的调用;
a. Activity 的启动模式,区别【美团 】
b. singleInstance 如果不指定栈名,是怎么调配的?【 字节跳动】
(3). Intent 显示跳转与隐式跳转,如何应用?【美团】
(4). Activity A 跳转 B,B 跳转 C,A 不能间接跳转到 C,A 如何传递音讯给 C?【美团】
(5). Activity 如何保留状态的?
(6). 请描诉 Activity 的启动流程,从点击图标开始。【 B 站】
a. APP 是怎么启动的?
b. 启动一个 Activity 的流程剖析
(7). Service 的生命周期是什么样的?
a. Service 两种生命周期以及区别
(8). 你会在什么状况下应用 Service?
(9). startServer 和 bindServier 的区别?【美团】
(10). Service 和 Thread 的区别?
四、View System
(1).View 绘制流程与自定义 View 留神点。【西方头条 】【 美团 】
Android 中的每一个 UI 控件都是集成自 View, 而后这些 View 都具备雷同的绘制流程,必须通过 measure,layout 和 draw.
view 的绘制流程是在 Window 增加过程中,ViewRootImpl 类的 setView 办法开始的
(2). 在 onResume 中能够测量宽高么
(3). 事件散发机制是什么过程?【 西方头条 】
( 抵触怎么解决?【西方头条 *】
(5).View 散发反向制约的办法?【字节跳动 】
(6). 自定义 Behavior,NestScroll,NestChild。【 西方头条 】
(7).View.inflater 过程与异步 inflater【 西方头条 】
(8).inflater 为什么比自定义 View 慢?【 西方头条 】
(9).onTouchListener onTouchEvent onClick 的执行程序。【58】【 京东 】
(10). 怎么拦挡事件 onTouchEvent 如果返回 false onClick 还会执行么?【58】【 京东 】
(11). 事件的散发机制,责任链模式的优缺点【 美团 】
(12). 动画的分类以及区别【 车和家】
(13). 属性动画与一般的动画有什么区别?【车和家 】
(14). 插值器 估值器的区别【 车和家 】
(15).RecyclerView 与 ListView 的比照,缓存策略,优缺点。【 美团 】
(16).WebView 如何做资源缓存?【 字节跳动 】
(17).WebView 和 JS 交互的几种形式与拦挡办法。【 字节跳动 】
(18). 自定义 view 与 viewgroup 的区别
(19).View 的绘制原理
(20).View 中 onTouch,onTouchEvent 和 onClick 的执行程序
(21).View 的滑动形式
(22).invalidate() 和 postInvalicate() 区别
(23).View 的绘制流程是从 Activity 的哪个生命周期办法开始执行的
(24).Activity,Window,View 三者的分割和区别
(25). 如何实现 Activity 窗口疾速变暗
(26).ListView 卡顿的起因以及优化策略
(27).ViewHolder 为什么要被申明成动态外部类
(28).Android 中的动画有哪些? 动画占用大量内存,如何优化
(29). 自定义 View 执行 invalidate() 办法, 为什么有时候不会回调 onDraw()
(30).DecorView, ViewRootImpl,View 之间的关系,ViewGroup.add()会多增加一个 ViewrootImpl 吗
(31). 如何通过 WindowManager 增加 Window(代码实现)?
(32). 为什么 Dialog 不能用 Application 的 Context?
(33).WindowMangerService 中 token 到底是什么?有什么区别
(34).RecyclerView 是什么?如何应用?如何返回不一样的 Item
(35).RecyclerView 的回收复用机制
(36). 如何给 ListView & RecyclerView 加上拉刷新 & 下拉加载更多机制
(37). 如何对 ListView & RecycleView 进行部分刷新的?
(38).ScrollView 下嵌套一个 RecycleView 通常会呈现什么问题?
(39). 一个 ListView 或者一个 RecyclerView 在显示新闻数据的时候,呈现图片错位,可能的起因有哪些 & 如何解决?
(40_.Requestlayout,onlayout,onDraw,DrawChild 区别与分割
(41). 如何优化自定义 View
(42).Android 属性动画实现原理,补间动画实现原理
五、Android FrameWork
1.Android 中多过程通信的形式有哪些?
a. 过程通信你用过哪些?原理是什么?【字节跳动 】【 小米 】
2. 形容下 Binder 机制原理?【 西方头条 】
3.Binder 线程池的工作过程是什么样?【 西方头条 】
4.Handler 怎么进行线程通信,原理是什么?【西方头条】
5.Handler 如果没有音讯解决是阻塞的还是非阻塞的?【 字节跳动 】【 小米】
6.handler.post(Runnable) runnable 是如何执行的?【字节跳动 】【 小米 】
7.handler 的 Callback 和 handlemessage 都存在,但 callback 返回 true handleMessage 还会执行么?【 字节跳动 】【 小米 】
8.Handler 的 sendMessage 和 postDelay 的区别?【 字节跳动 】
9.IdleHandler 是什么?怎么应用,能解决什么问题?
10. 为什么 Looper.loop 不阻塞主线程?
a.Looper 有限循环为啥没有 ANR【 B 站】
11.Looper 如何在子线程中创立?【 字节跳动 】【 小米 】
12.Looper、handler、线程间的关系。例如一个线程能够有几个 Looper 能够对应几个 Handler?【 字节跳动 】【 小米 】
13. 如何更新 UI,为什么子线程不能更新 UI?【 美团 】
14.ThreadLocal 的原理,以及在 Looper 是如何利用的?【 字节跳动 】【 小米 】
15.Android 有哪些存储数据的形式?
16.SharedPreference 原理,commit 与 apply 的区别是什么?应用时须要有哪些留神?
17. 如何判断一个 APP 在前台还是后盾?
18. 如何做利用保活?
19. 一张图片 100×100 在内存中的大小?【 字节跳动】
\20. Intent 的原理,作用,能够传递哪些类型的参数?
21. 如果须要在 Activity 间传递大量的数据怎么办?
22. 关上多个页面,如何实现一键退出?
23.LiveData 的生命周期如何监听的?【 B 站】
六、性能优化专题
1.App 稳定性优化
2.App 启动速度优化
3.App 内存优化
4.App 绘制优化
5.App 瘦身
6. 网络优化
7.App 电量优化
8. 安卓的平安优化
9. 为什么 WebView 加载会慢呢?
10. 如何优化自定义 View
11.FC(Force Close) 什么时候会呈现?
12.Java 多线程引发的性能问题,怎么解决?
13.TraceView 的实现原理,剖析数据误差起源。
14. 是否应用过 SysTrace,原理的理解?
15.mmap + native 日志优化?
简历的制作
对于简历,网络上有很多的博客写得很好,读者能够自行去搜查一下。这里次要和读者们分享笔者对于简历的一些心得。
- 简历的作用是展现本人的亮点给面试官,让面试官能够在短时间内迅速理解咱们
- 简历肯定要把本人的亮点写上去,展现本人的能力。说人话就是:通知面试官本人有多牛叉,这不是体现咱们虚心的时候。不论是我的项目亮点、还是集体技能,都统统写上去。
- 技能点形容要精准,不要含糊。
- 写上简历的内容肯定要是本人把握的内容。
面试倡议
1. 有急躁且被动
面试不要焦急着去问后果,个别在 hr 面的时候,她的态度多少可能猜个七七八八的,如果等上一周还没有告诉,那就能够被动去问了。
2. 刷题是为了晋升本人的运气
运气在面试过程中是十分重要的,刷题的目标很简略,除了坚固咱们所把握的,另一个就是为了能进步在面试中咱们的运气,如果可能问到一样的题是再好不过了,当然这个方法是实用于职级中低岗位。
3. 把握根底,留神深度
大厂面试最喜爱问两类问题,一类是根底,另一类就是深度。根底局部,无非就是咱们所把握的技术根底内容,基本上只有是有筹备的都没有太大的问题。另一部分就是深度问题,大多波及到本人之前的工作、我的项目,面试官所问的问题不仅仅是停留在外表那么简略,背地的原理是什么才是面试官想要问的。
4. 刷面试题
因为篇幅无限,想要更多大厂面试题的敌人们,点这里支付哦
最初
这是我在工作、面试中学习并总结到的一些知识点,都是一些比拟典型的、常被问到的问题。如果你平时没有留神去总结的话,那么当你面试被问到的时候可能会是一脸懵圈,就算这个问题你晓得怎么回事,然而你平时没有认真总结,你也可能会呈现逻辑凌乱的状况,从而错失工作机会。
其实 Android 开发的知识点就那么多,面试问来问去还是那么点货色。所以面试没有其余的窍门,只看你对这些知识点筹备的充沛水平。so,进来面试时先看看本人温习到了哪个阶段就好。