养成每年都去面试市场看看的好习惯很重要,看清形势,也认清自己 zzz ...
知识点都要见识过,至少有印象 (否则:喔唷~~~ 不给性感面试官,在线发offer的机会喽)
目录
1.Java入门知识点分析
- 什么是面向对象 *
- java有哪几种基本数据类型
- java语言基本格式
- 普通类/ 接口类 / 抽象类 / 枚举类 的共性
- 普通类/ 接口类 区别?
- 普通类/ 抽象类 区别?
- 普通类/ 枚举类 区别?
- 接口类/ 抽象类 区别?
- 继承注意事项?
- 接口实现注意事项?
- 访问修饰符有几种?
- 访问修饰符对 类 / 属性 / 方法上分别起什么作用?
- static 修饰符有什么作用?
- final 修饰符作用?
- java中对象怎么创建?
- i++ 与 ++i的区别?
- = 与 == 分别是什么含义?
- 数组有几种创建方式?
- 字符串创建有几种方式?
- java中超类是哪个,有什么特点?
- java集合有哪几种?
- 数组和链表的区别?(数据结构)
2.java基础知识
java基础语法
- 继承和接口实现有什么区别?
- 多态是什么?
- 重写和重载的区别?
- java中根据数据类型区分:可以分为哪2种?
java基本数据类型
- java有哪几种基本数据类型 ,对应的包装类是哪些?
- int 类型能否为null?
- byte / short / int / long,在内存中存储 对应字的节数为多少?
- float / double 精度 ?
- boolean默认值是? 在内存中存储的值是怎么样?
- int 类型引用 能指向 long类型空间 吗?反之呢? (可以从内存角度分析)为什么?
- int类型值上下限是多少?
- byte类型 与 bit 区别?
- 基本数据类型 --- 自动类型转换顺序知道吗?从高到底依次是怎么样的?
- 能把大容量类型转换为小容量类型吗?
- char类型转int类型的结果可以去哪儿查? (有对应的表)
- 精度值强转成整型,是进行4舍5入还是其它?
- 整型 3/2 结果是多少?
- Math中取余数的方法对负数是怎么处理的?
java包装类
- Object类中有多少个方法?每个方法的作用
- 其中的clone() 方法与序列化相比有什么区别?
- finalize() 方法什么作用?
- Integer包装类了解多少?
-
哪几个返回true?为什么呢?(可以从装箱/拆箱的角度回答问题)Integer x= 127; Integer x1= 127; int x2 = 127; System.out.println( x == 127); System.out.println( x == (Integer) 127); System.out.println( x == x1); System.out.println( x1 == x2); Integer a= 128; int a1 = 128; Integer a2= 128; Integer b= 129; int b1 = 129; Integer c= new Integer(128); Integer d= new Integer(129); System.out.println( a == 128); System.out.println( a == (Integer) 128); System.out.println( a == a1); System.out.println( a == a2); System.out.println( a == c); System.out.println( b == b1); System.out.println( b == d);
- 交换Integer类型的2个值,方法怎么写?
Integer a= 128; Integer b= 129; System.out.println( "交换前:a = " + a + ", b = " + b); swap(a, b); System.out.println( "交换后:a = " + a + ", b = " + b); public static void swap(Integer i, Integer j){ Integer temp = new Integer(i.intValue()); try { Field intValue = Integer.class.getDeclaredField("value"); intValue.setAccessible(true); intValue.set(i, j); intValue.set(j, temp); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }
上面这个方法对吗?里面有涉及到多少知识点?
- String 类能否被继承?
- String对象能否修改?
- String类中常用方法有哪些?
- 字符串比较
String a = "abc"; String b = "abc"; String c = new String("abc"); System.out.println( a == b); System.out.println( a == c);
结果怎么样?能从内存模型角度解析一下吗?
-
字符串比较
public static void main(String[] args) { String a = "ab"; String c = "cd"; String d = "abcd" String e = "ab" + "cd" + ""; String f = a + "cd"; String g = a + c; }
判断上面 d == e / e == f / e == g / f == g ,哪些为true,哪些为false?为什么(String运行反编译文章 传送门)
-
StringBuffer 和 StringBuild的比较?
-
String 类的 indexof() 方法什么意思?
-
String类的replace() 和 replaceAll () 有什么区别?
-
trim() 能去除字符串中间的空白符吗?
-
intern() 方法有什么用,jdk5之后该方法做了什么修改?
java集合容器
-
数组与集合有什么区别 ?*(传送门)
-
java中集合类有哪些 ?
-
collection 与collections 有什么区别 ?
-
iterator和 Iterable 有什么区别 ?
-
comparator<T> 比较函数式接口理解多少,compareable 排序接口 怎么使用?写个程序举例子
-
Collection中有remove方法 Iterator中也有remove,2者有什么区别 ?
-
List 和 Set的区别 ?
-
List是否可以存储重复的值吗 ?有顺序吗?可以存储null吗? Map呢 ?
-
数组和链表 数据结构上的区别 ?
-
List是否是线程安全的?如果不安全,能否举个例子说明不安全 ?
-
CopyOnWriteArrayList 的使用了解吗 ?
-
Set有什么特点?一般什么场景使用它 ?
-
HashSet 和 TreeSet有什么区别?内部实现能描述吗?
-
Collection 常用方法有哪些知道吗 ?1.8之后加入什么方法 ?
-
Map 常用方法知道吗 ?Properties实现了什么接口 ?
-
Map中k-v,key能存储空值吗?value能存储空值吗?
-
HashMap也是变长的,默认长度是多少?什么情况下,会进行扩容 ?
-
HashMap 1.7 中put操作的流程大概记得吗?大概描述一下?<java基础-8-HashMap / concurrentHashMap_开发小头目的博客-CSDN博客>
-
HashMap 1.7 中get操作的流程大概记得吗?大概描述一下?
-
HashMap 1.7 中size操作的流程大概记得吗?大概描述一下?
-
HashMap和HashTable的区别?
-
CurrentHashMap 与 HashMap有什么区别?
-
HashMap底层实现?1.8版本有什么新改动?
-
HashMap 1.8 中put操作的流程大概记得吗?大概描述一下?
-
HashMap 1.8 中get操作的流程大概记得吗?大概描述一下?
-
HashMap 1.8 中size操作的流程大概记得吗?大概描述一下?
-
Hash冲突问题怎么解决?
-
CurrentHashMap1.7 如何实现同步,可以谈谈内部结构? 1.8版本做了些什么改动
-
CurrentHashMap在1.7中segment初始化都在什么时候?
-
CurrentHashMap在1.7中put中先获取锁还是先扩容?(送分)
-
CurrentHashMap在1.7中size会发生什么问题,推荐使用吗?
-
CurrentHashMap 1.8版本如何实现同步?取消使用AQS机制,用到了synchronized,为什么这么选择?
-
核心方法: tabAt / casTabAt / setTabAt 这几个方法如何实现保证线程安全?
-
CurrentHashMap 1.8版本中红黑树 与 链表什么时候互相开始转换?
Node 节点数量 >64 : 链表长度>8 链转树 , 链表长度<6 树转链 -
CurrentHashMap 1.8版本的并发度?
-
CurrentHashMap 1.8 中put操作的流程大概记得吗?大概描述一下?
-
CurrentHashMap 1.8 中get操作的流程大概记得吗?大概描述一下?
-
CurrentHashMap 1.8 中size操作的流程大概记得吗?大概描述一下?
-
SkipList - 跳表的数据结构?
-
SkipList - 跳表出现的目的?增快查询的数据
-
SkipList - 跳表的查询思想?空间换时间!
-
java 二分法理解? -- Java 二分法_头发挺多的的博客-CSDN博客_java二分法
-
红黑树的概念? -- 红黑树解析_Aaron_Mars的博客-CSDN博客_红黑树不要求左树比右数小?
-
当二叉树出现最坏情况变成链表的情况,怎么解决?通过左右旋靠近平衡二叉树,红黑树!
-
CopyOnWriteArrayList 写时复置容器,用空间换时间,单服务可以使用做白名单/黑名单!
java工具类
-
Number类了解多少?
-
数组的创建方式?
-
日期类Date() 与JDK8新加入的日期类 LocalDateTime() 横向比较.
-
计算2个时间之间相隔多少天? (多方法实现)
-
正则语法不要忘记>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
java运算符/循环结构
-
循环有哪几种方法,continue, break; return; 在循环中分别起到什么作用?
-
switch () 入参类型限制? 字符串类型可以吗(什么版本jdk加入)?
-
下面的代码最终输出什么内容?
public static void main(String args[]){ int i = 1; switch(i){ case 0: System.out.println("0"); case 1: System.out.println("1"); case 2: System.out.println("2"); default: System.out.println("default"); } }
-
普通for循环, 增强for 循环, foreach循环有什么区别吗?
-
java8新增的循环方式: IntStream.range(a, b).forEach(),与普通for循环相比优势和劣势?
-
IntStream.range(a, b)循环想要加入stop条件?(java9中加入了那些方法)
-
位运算符>> 与 >>> 的区别?位运算了解多少?
java反射
-
创建一个对象有那些方式? Java对象创建的方式(简洁明了)_安逸的博客的博客-CSDN博客
-
Java中的反射可以怎么理解?
-
获取Class有哪些方式?
-
反射怎么获取属性/方法?
-
对象的私有属性,没有公用方法,怎么修改值?
-
Junit中是否使用到反射知识?
-
Spring的Bean创建是否使用了反射? 如果有是Cglib 还是java自带动态代理proxy?
-
注解解析是否使用反射,怎么使用的?
java 流IO (这块不大熟悉)
-
字节流,字符流了解多少?
-
BIO是什么,有什么特点?快速了解Java中BIO和NIO线程的内容,看这一篇足矣_Xiao艾扶的博客-CSDN博客
-
NIO是什么,有什么特点?
java 错误/异常Throwable
-
java语言中所有错误/异常的超类是什么?
-
throw 和 throws的区别是什么?
-
Exception 和 RuntimeException 怎么理解?举例子说明更棒
-
什么是编译期异常?什么是运行时异常?
-
常见的异常知道多少?列举20个(😄,直接榨干)
-
Error 和 Exception有什么区别?能举例说明吗?Error 和 Exception 的区别?_任重而道远丶的博客-CSDN博客_error和exception
-
java中什么是异常链?我们一般利用异常链做什么?
-
try / catch / finally
public static void main(String[] args) { System.out.println(test1(0)); System.out.println(test2(0)); System.out.println(test3(0)); System.out.println(test4(0)); } public static Integer test1(Integer a) { try { a += 1; return a; } catch (Exception e) { a += 10; } finally { a += 100; System.out.println("finally:" + a); } return a; } public static Integer test2(Integer a) { try { a += 1; } catch (Exception e) { a += 10; } finally { a += 100; System.out.println("finally:" + a); } return a; } public static Integer test3(Integer a) { try { a += 1/0; } catch (Exception e) { a += 10; return a; } finally { a += 100; System.out.println("finally:" + a); } return a; } public static Integer test4(Integer a) { try { a += 1/0; return a; } catch (Exception e) { a += 10; } finally { a += 100; System.out.println("finally:" + a); } return a; }
输出结果如何,能解释一下吗?
-
catch方法
try { XXXX } catch (Exception ex) { ex.printStackTrace(); } catch (RuntimeException re) { re.printStackTrace(); }
上面的代码会报错吗?属于什么时期的异常?
java线程知识
-
多线程的意义?
-
时间片轮转概念?
-
线程的并行数和并发数的区别?
-
多线程之间是协作式还是抢占式工作?
-
Java内存模型了解吗?多线程运行,内存如何分配!
-
java中创建新线程的方式有哪些?
-
Thread类了解多少?里面有哪些常用方法?
-
Runnable接口了解吗?
-
run() / start() 方法有什么区别?
-
runnable 接口和 callable接口有什么区别?
-
带返回值的新起线程,怎么获取返回值?
-
对Future<V> 了解多少,get()获取线程返回值,会等待吗还是直接返回null?
-
(函数式方法)lambad表达式实现一个线程创建?
-
以前对于线程知识也有过一些提问(传送门)
-
线程运行的流转状态有那些?
-
wait 与 notify 有什么作用? notify 和 notfiyAll 有什么区别?一般怎么选择
-
sleep与wait有什么区别?
-
interrupt 与interrupted 有什么区别?分别是什么作用
-
怎么安全的停止线程,停止服务?
-
什么是死锁?(死锁例子:传送门)
-
synchronized关键字能在基本数据类型上使用吗?能在 Integer 上使用吗?
-
synchronized能在哪些位置使用,方法?方法块?静态方法?
-
volatile关键字的作用,与synchronized相比有什么区别,结合内存模型谈谈?
-
ThreadLocal 概念?线程局部变量!
-
在ThreadLocal中内存泄漏怎么发生? (tip:Thread类中ThreadLocalMap -- Entry extends WeakReference<ThreadLocal<?>>)----有些忘记了
-
strongReference / softReference / weakReference / 虚引用 的区别?
-
线程池大概是什么,有什么作用?
-
线程池创建入参有哪些?分别有什么作用?
-
线程池该如何选择?针对不同的情况:IO密集型和 CPU密集型
-
线程池的等待队列如何选择 =====> 什么情况 ?有界or无界
-
拒绝策略的目的是什么?拒绝策略我们如何选择 ?
-
BlockingQueue:什么是阻塞(等待)队列?
-
BlockingQueue:对于生产者和消费者模式,什么时候会出现阻塞?有界和无界的区别
-
DelayQueue :延迟队列有什么特点?
-
阻塞队列的操作?队列插入元素有哪几种?移除元素有哪几种?有什么区别?
-
阻塞队列的检查方法有哪些?有什么区别 阻塞队列的操作方法_Leon_Jinhai_Sun的博客-CSDN博客_阻塞队列方法
-
Executors 类内部给我们实现了很多种类型的线程池,可以随便取2个分析一下吗?
-
除了java语言锁synchronized,还有其它锁吗?
-
CAS原理?与synchronized相比较呢?
-
cas的使用会出现哪些问题? ABA问题怎么发生? 怎么避免?(和volatile搭配使用香不香?)
-
JDK并发包 - 代码实现的锁 Lock 了解多少?
-
ReentrantLock锁了解多少?几个核心方法是什么?
-
ReentrantLock锁的使用固定格式知道吗?
-
公平锁和非公平锁区别在哪儿?效率怎么比较?
-
ReentrantLock是否可重入?可重入的概念是什么?
-
当读多写少的时候如何选择锁?读写锁了解多少?如何使用?
-
关于AQS了解多少?能否自己实现一个简单的可重入锁?
-
锁的对象是什么?继承AbstractQueuedSynchronize 需要实现那几个主要方法?(标记当前获取锁线程方法, trylock / release)
-
关于tryAcquire() 方法的核心操作怎么一个实现流程知道吗?传送门
-
AQS中有一个condition类的使用,了解多少呢?
-
AQS中LockSupport这个又了解多少呢?
-
对于AQS实现的锁,能画一张图来描述一下吗?