Android 面试题集(2019-04-04总结)
ClAndEllen [code小生](javascript:void(0)😉 2019-06-25
作者:ClAndEllen
链接:https://www.jianshu.com/p/98255550b41e
一份Android面试题集,适应于实习 & 初级工程师 & 中级工程师,高级工程师勉强吧。笔者不提供答案,但是会提供学习链接,旨在能帮助广大Android学习者找到心仪的Offer,文章底部是笔者收集的一些有关面试的文章链接,希望Android求职者认真研读,准备面试,并顺利找到Offer。如果你是Android学习者,请订阅笔者的Android知识体系总结(全方面覆盖Android知识结构,面试&进阶),本篇文章中的问题可以从文章中找到答案,谢谢支持。查阅答案,请star项目AndroidFace
本面试题集只应对于Android求职者,有5个模块:
Java部分
Android部分
数据结构与算法部分
常用的开源库部分
计算机网络认识
1.Java部分
1.1 操作系统相关
- 1.什么是操作系统?
- 2.什么是线程,什么是进程?
1.2 JDK&JVM&JRE
- 1.JDK & JVM & JRE分别是什么以及它们的区别?
- 2.解释一下为什么Java可以跨平台?
1.3 面向过程 & 面向对象
- 1.什么是面向过程 & 什么是面向对象 & 区别?
- 2.给我说说Java面向对象的特征以及讲讲你代码中凸显这些特征的经验。
- 3.什么是重载 & 什么是重写 & 区别。
- 4.谈谈你对this和super的认识。
- 5.接口和抽象类的区别。
- 6.静态属性和静态方法能被继承吗?静态方法又是否能被重写呢?
- 7.给我说说权限修饰符特性。
- 8.给我谈谈Java中的内部类。
- 9.闭包和内部类的区别?
- 10.Java多态的实现机制是什么?
- 11.谈谈你对对象生命周期的认识?
- 12.static关键字的作用?
- 13.final关键字的作用。
1.4 八大基本数据类型&引用类型
- 1.说说Java中的8大基本类型 & 内存中占有的字节 & 什么是引用类型?
- 2.什么是拆箱 & 装箱,能给我举栗子吗?
1.5 数组
- 1.能说说多维数组在内存上是怎么存储的吗?
- 2.你对数组二次封装过吗?说说封装了什么
1.6 Java异常
- 1.说说Java异常体系主要用来干什么的 & 异常体系?
- 2.Error和Exception的区别?
- 3.说说运行时异常和非运行时异常的区别?
- 4.如何自定义一个异常?
- 5.throw和throws 的区别?
- 6.try{}catch{}finally{}可以没有finally吗?
- 7.finally语块有什么特点?
- 8.return在try{}catch{}finally{}中执行具有哪些规则?
- 9.给我例举至少5个常见的运行时异常。
1.7 NIO/BIO/AIO
- 1.NIO是什么 & BIO是什么 & AIO是什么 & 它们之间的区别?
- 2.IO按照方向和数据类型划分能划分为哪些数据流?
- 3.能给我说说NIO有什么特点?平常开发中使用过吗?
1.8 集合(容器)
- 1.说说Java中集合的框架?
- 2.Collection & Map区别
- 3.谈谈你常用的集合 & 它们底层的实现方式 & 优缺点 & 使用场景。
- 4.Map的遍历方式有哪些?
- 5.给我说说ArrayList的扩容机制.
- 6.什么是深拷贝 & 浅拷贝 & 如何深拷贝一个List集合.
- 7.Set是如何确保它的唯一性的。
- 8.你觉得HashMap的元素顺序和什么有关?
- 9.Java中HashMap如何解决哈希碰撞的?
- 10.ConcurrentHashMap如何实现并发访问的?
- 11.谈谈Java集合中那些线程安全的集合 & 实现原理。
- 12.说说有哪些集合能加入null,哪些不能加入null,为什么?
- 13.说说LinkedHashMap原理。
- 14.Collection 和 Collections的区别?
- 15.比较一下ArrayMap和HashMap。
- 16.说说HashMap的原理。
1.9 线程
- 1.什么是线程?能解决什么问题。
- 2.Java中创建线程的2种方式 & 区别?
- 3.给我说说线程的生命周期。
- 4.线程死锁的原因 & 举个栗子 & 如何避免死锁。
- 5.Synchronized放在静态方法和非静态方法上的锁对象分别是什么?
- 6.如何停止掉一个线程?
- 7.给我说说线程池的种类 & 特点 & 内部原理 & 平时当中使用案例。
- 8.给我谈谈你是如何保证线程数据安全问题的?
- 9.wait()和sleep()的区别?
- 10.什么是公平锁&非公平锁&区别?
- 11.给我讲讲线程间通信
- 12.volatile关键字是如何使用的?原理是什么
- 13.说说使用5个线程去计算一个数组之和的思路。
- 14.谈谈线程阻塞的原因有哪些?
- 15.谈谈你对notify的理解?
- 16.你觉得Lock和Synchronized的区别是什么?
- 17.谈谈你对ReentrantLock的认识。
- 18.调用run()和start()的区别?
- 19.transient关键字的用法 & 作用 & 原理。
- 20.线程池的种类 & 工作原理 & ThreadPoolExecutor的工作策略有哪些?
- 21.ThreadLocal了解吗?说说原理。
- 22.权衡多线程的性能。
- 23.如何理解同步和异步,阻塞和非阻塞。
1.10 泛型
- 1.什么是泛型?能解决什么问题?
- 2.说说Java中泛型的工作机制?
- 3.在泛型种extends和super关键字的区别是什么?
1.11 反射
- 1.什么是反射?
- 2.如何获取一个类的成员变量 & 成员方法 & 注解信息 & …。
- 3.通常在项目当中用到反射多吗?都是用来干嘛?