阿里、头条、快手、趣头条、Android-面试真题集锦

2.synchronized 和 volatile 、ReentrantLock 、CAS 的区别。
这个问题被问频率不在 HashMap 之下,因为并发编程,真的很重要。能问到这几个点的方式真的是太多了,我们能发挥的空间也同样很大。CAS 的 ABA 问题?上面几个东西的特性?使用场景?大概我不用再例举了吧?对了,我多次被问到的一个问题是:synchronized 修饰实例方法和修饰静态方法有啥不一样。

3.JVM 类加载机制、垃圾回收算法对比、Java 虚拟机结构等。
这三个问题大概出现概率 40%,基本只需要看我每日一问系列的推文就差不多了吧,希望更清楚明白的可以直接看《深入理解 Java 虚拟机》。当你讲到分代回收算法的时候,不免会被追问到新生对象是怎么从年轻代到老年代的,以及可以作为 root 结点的对象有哪些两个问题。

4.Java 的四大引用
四大引用面试出现概率比我想象中要高,我原本以为就强引用、软引用、弱引用、虚引用这四个玩意儿没啥可讲的。实际上也确实没啥好讲的,稍微问的深一些的面试官会和内存泄漏检测原理以及垃圾回收糅杂在一起。

5.Java 的泛型,<? super T> 和 <? extends T> 的区别。
Java 泛型还是会在面试中出现的,不过几率不是很高,大概是因为我简历中有提到泛型擦除相关的东西。所以会被问到泛型、泛型擦除、通配符相关的东西。不过这个东西,不应该是为了应付面试,实际开发中真的很重要。

6.Java 线程有哪些状态,有哪些锁,各种锁的区别。
这个问题讲真,我也只懂一点皮毛,并且当时回答不是很全面,出现概率的话,不是很高吧。

7.final 、finally、finalize 区别。
老生常谈的问题,没啥好说的,实际上这次社招面试也只遇到了两次。比较喜欢追根溯源的面试官可能会对这个 finalize 有点执念,一定希望搞清楚,这玩意儿我们是不是可以真的搞点黑科技骚操作。

8.接口和抽象类的区别。
没想到还被问了一次这个,这玩意儿给我的感觉就是随时都在用,但真要较真,还真不能一口气把所有区别都信手拈来。

9.sleep 、wait、yield 的区别,wait 的线程如何唤醒它?
大多数 Android 应用开发并接触不到很多并发相关的东西,不过这玩意儿还是在面试中挺容易出现的。

计算机网络部分。

计算机网络部分还是挺容易考察的,不过考察的点不会那么深入。通常来说也就是这些问题:

1.TCP 有哪些状态。
2.三次握手、四次挥手。为啥是三次不是两次?
3.HTTPS 和 HTTP 的区别。HTTPS 2.0,3.0?
4.浏览器输入一个 URL,按下回车网络传输的流程?
5.喜欢深问一点的还会问到网络架构,每层有些什么协议,FTP 这些相关原理,印象比较深刻的还有一个问题是:TCP 建立连接后,发包频率是怎样的?

Android 部分

Android 很广,所以这里只是简单说下有些什么问题。这个的话其实真的 70% 问题出自你的简历。

1.Activity 的生命周期;
2.Android 的 4 大启动模式,注意 onNewIntent() 的调用;
3.组件化架构思路,如何从一个老项目一步一步实现组件化,主要问实现思路,考察应试者的架构能力和思考能力。
这一块内容真的很多,你需要考虑的问题很多,哪一步做什么,顺序很重要。
4.MVC、MCP、MVVP 的区别和各种使用场景,如何选择适合自己的开发架构?
5.Router 原理,如何实现组件间通信,组件化平级调用数据方式。
6.系统打包流程;
7.APP 启动流程;
8.如何做启动优化?
冷启动什么的肯定是基础,后续应该还有的是懒加载,丢线程池同步处理,需要注意这里可能会有的坑是,丢线程池如何知道全部完成。
9.事件分发机制。
事件分发已经不是直接让你讲了,会给你具体的场景,比如 A 嵌套 B ,B 嵌套 C,从 C 中心按下,一下滑出到 A,事件分发的过程,这里面肯定会有 ACTION_CANCEL 的相关调用时机。
10.如何检测卡顿,卡顿原理是什么,怎么判断是页面响应卡顿还是逻辑处理造成的卡顿?
11.生产者模式和消费者模式的区别?
12.单例模式双重加锁,为什么要这样做。
13.Handler 机制原理,IdleHandler 什么时候调用。
14.LeakCanary 原理,为什么检测内存泄漏需要两次?
15.BlockCanary 原理。
16.ViewGroup 绘制顺序;
17.Android 有哪些存储数据的方式。
18.SharedPrefrence 源码和问题点;
19讲讲 Android 的四大组件;
20.属性动画、补间动画、帧动画的区别和使用场景;
21.自定义 ViewGroup 如何实现 FlowLayout?如何实现 FlowLayout 调换顺序?
22.自定义 View 如何实现打桌球效果;
23.自定义 View 如何实现拉弓效果,贝瑟尔曲线原理实现?
24.APK 瘦身是怎么做的,只用 armabi-v7a 没有什么问题么?
APK 瘦身这个基本是 100% 被面试问到,可能是我简历上提到的原因。
25.ListView 和 RecyclerView 区别?RecyclerView 有几层缓存,如何让两个 RecyclerView 共用一个缓存?
26.如何判断一个 APP 在前台还是后台?
27.如何做应用保活?全家桶原理?
28.讲讲你所做过的性能优化。
29.Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的。
30.讲讲轨迹视频的音视频合成原理;
31.AIDL 相关;
32.Binder 机制,讲讲 Linux 上的 IPC 通信,Binder 有什么优势,Android 上有哪些多进程通信机制?
33.RxJava 的线程切换原理。
34.OkHttp 和 Volloy 区别;
35.Glide 缓存原理,如何设计一个大图加载框架。
36.LRUCache 原理;
37.讲讲咕咚项目开发中遇到的最大的一个难题和挑战;
这个问题基本是 95% 必问的一个问题;
38.说说你开发最大的优势点。

出现率同上。

算法

1.String 转 int。
核心算法就三行代码,不过临界条件很多,除了判空,还需要注意负数、Integer 的最大最小值边界等;
2.如何判断一个单链表有环?
3.链表翻转;
4.快排;
5.100 亿个单词,找出出现频率最高的单词。要求几种方案;

最后,面试前该准备哪些资源复习?

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《960全网最全Android开发笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值