面试:Android面经 自己整理了下分享出来(一)——Java部分

Android工作了一年半,想换一份工作,没办法得准备准备,那就自己整理一遍面经,问题都是些常见的面试题,
希望能对同样求职的你也有帮助!! 下面是面试的一些问题,我整理的答案我会另外整理下!!!

一、什么是操作系统
二、说说进程和线程]
三、简单介绍下JDK&JRE&JVM

四、面向过程&面向对象
1.什么是面向过程 & 什么是面向对象 & 区别?
2.给我说说 Java 面向对象的特征以及讲讲你代码中凸显这些特征的经验。(封装、抽象、继承、多态)
3.什么是重载 & 什么是重写 & 区别。
4.谈谈你对 this 和 super 的认识。
5.接口和抽象类的区别。
6.静态属性和静态方法能被继承吗?静态方法又是否能被重写呢?
7.给我说说权限修饰符特性。
8.给我谈谈 Java 中的内部类。
9.构造方法:
10.集合框架
11.闭包和内部类的区别?
12.Java 多态的实现机制是什么?
13.谈谈你对对象生命周期的认识?
14.static 、final关键字的作用及区别?
15.封装总结
16.常见异常:

	1、ArithmeticException:算数情形的异常;比如除数为0
	2、InputMismatchException:输入不匹配异常
	3、NullPointerException:空指针异常
	4、ArrayIndexOutofBoundsException:数组下标越界异常
	5、ClassNotFoundException:找不到相应类异常
	

五、八大基本数据类型&引用类型
1.说说 Java 中的 8 大基本类型 & 内存中占有的字节 & 什么是引用类型?
2.什么是拆箱 & 装箱,能给我举栗子吗?
3.知道 float 和 double 类型为什么会出现精度丢失的情况吗?
4.基本类型的初始化值为多少?引用类型的初始值为多少?

六、数组
1.能说说多维数组在内存上是怎么存储的吗?
2.你对数组二次封装过吗?说说封装了什么

七、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 个常见的运行时异常。
10.你如何看待 Java 加入异常这样的机制?

八、NIO/BIO/AIO
1.NIO 是什么 & BIO 是什么 & AIO 是什么 & 它们之间的区别?
2.IO 按照方向和数据类型划分能划分为哪些数据流?
3.能给我说说 NIO 有什么特点?平常开发中使用过吗?
4.如果读取一个 txt 文本文件乱码了,你觉得原因是什么?

九、集合(容器)
说说 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 & SparseArray & HashMap。
16.说说 HashMap 的原理。
17.写代码仿写 LikedList。

十、线程
1.什么是线程?能解决什么问题。
2.Java 中创建线程的 2 种方式 & 区别?
3.给我说说线程的生命周期。
4.线程死锁的原因 & 举个栗子 & 如何避免死锁。
5.Synchronized 放在静态方法和非静态方法上的锁对象分别是什么?
6.如何停止掉一个线程?
7.给我说说线程池的种类 & 特点 & 内部原理 & 平时当中使用案例。
8.谈谈线程池的 7 大核心参数 & 线程池有哪几种饱和策略?
9.给我谈谈你是如何保证线程数据安全问题的?
10.wait()和 sleep()的区别?
11.什么是公平锁&非公平锁&区别?锁的分类。
12.给我讲讲线程间通信
13.volatile 关键字是如何使用的?原理是什么
14.说说使用 5 个线程去计算一个数组之和的思路。
15.谈谈线程阻塞的原因有哪些?
16.谈谈你对 notify 的理解?
17.你觉得 Lock 和 Synchronized 的区别是什么?
18.谈谈你对 ReentrantLock 的认识。
19.调用 run()和 start()的区别?
20.transient 关键字的用法 & 作用 & 原理。
21.线程池的种类 & 工作原理 & ThreadPoolExecutor 的工作策略有哪些?
22.ThreadLocal 了解吗?说说原理。
23.权衡多线程的性能。
24.如何理解同步和异步,阻塞和非阻塞。
25.比较一下线程和协程。
26.从源码角度讲讲你对 Thread 类中 run 方法的理解。
27.谈谈 Java 内存模型。
28.两次调用 Thread 对象的 start 方法会发生什么?为什么?
29.Thread 的 sleep 方法会清除中断的状态吗?
30.为什么线程通信的方法 wait,notify,notifyAll 被定义于 Object 中,而 sleep 方法被定义在 Thread 类中?
31.说说 Thread 类中提供的 getState()方法作用,然后说说线程的状态有哪些以及转换过程。
32.用至少 2 种方式手写生产者消费者模式代码。
33.interrupted 和 isInterrupted 方法的区别?
34.分别讲讲 JVM 内存结构,Java 内存模型,Java 对象模型。
35.什么是 happens-before?它的规则有哪些?
36.什么是 JMM?谈谈工作内存和主内存的关系。
37.Java 重排序了解吗?谈谈重排序的 3 种情况。
38.什么是可见性?为什么存在可见性问题?怎样解决可见性带来的问题?
39.管程是什么?谈谈它的重要性。

十一、泛型
1.什么是泛型?能解决什么问题?
2.说说 Java 中泛型的工作机制?
3.在泛型种 extends 和 super 关键字的区别是什么?
4.比较一下其它语言中的泛型和 Java 泛型的区别。
5.在 Java 中 List< A >和 List< B >是一样的类型还是不一样的类型?为什么?
6.你可以例举一些自己使用泛型的栗子吗?

十二、反射
1.什么是反射?
2.如何获取一个类的成员变量 & 成员方法 & 注解信息 & …。
3.通常在项目当中用到反射多吗?都是用来干嘛?
4.你如何看待很多人认为反射效率很慢的问题?

十三、注解
1.什么是注解 & 它和注释的区别?
2.注解的工作机制是什么?
3.如何解析注解?

十四、Socket 编程
1.什么是 Socket 编程?
2.什么是 TCP,什么是 UDP,二者之间区别如何?

十五、设计模式
1.说说设计模式的六大原则。
2.请讲讲你会使用的一些设计模式?
3.请说说单例模式 & 你项目中常用的单例模式。
4.懒汉单例模式为什么要加 volaitle?
5.能否给我说说 Android 中至少 3 个用到设计模式的栗子?

十六、JVM相关
1.什么是 class 文件?
2.Java 代码执行流程?
3.Java 内存结构 & 内存模型。
4.GC 回收机制。
5.Java 虚拟机是如何加载一个类的?
6.给我谈谈类加载器。
7.谈谈 static 编译运行时的流程,在虚拟机中如何保存的?
8.说说 Java 种的 4 种引用以及用法?
9.如何判断一个对象是死亡的?
10.代码中直接调用 System.gc()会发生什么?
11.一个强引用直接被 null 赋值,那么这个对象会被立刻回收吗?
12.String a = “a”+“b”+“c”;在内存中创建了几个对象?
13.谈谈你对字符集的理解。
14.常见的编码格式有哪些?
15.utf-8 中的中文占几个字节?int 型占几个字节?
16.谈谈你对逻辑地址和物理地址的理解?
17.你知道对象什么时候会回调 finalize 方法吗?
18.可以给我谈谈匿名内部类的工作机制吗?

十七、其它 Java 部分有关面试题
1.为什么局部内部类访问局部变量需要 final?
2.String、StringBuffer、StringBuilder、CharSequence 的区别。
3.equals 和==的区别?
4.关于字符串的拼接你在项目中常常怎么操作的?为什么不能用“+”的方式进行拼接呢?
5.什么是 Callback,讲讲你项目中使用的一些有关 Callback 的栗子。
6.retrun & break & continue 区别?
7.如何判断一个字符串是回文字符串?
8.final,finally,finalize 的区别?
9.什么是动态代理 & 什么是静态代理?
10.String 为什么会加 final?
11.OOM 可以被 try{}catch{}吗?
12.给我谈谈正则表达式。
13.如何将 String 转成 int?
14.谈谈你对 String 的理解。
15.你如何理解序列化?有哪些方式序列化?
16.谈谈你对依赖注入的理解。
17.给我谈谈你对分派的理解。
18.字节码篡改技术了解吗?

要是都记住 ,那么破肥!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值