11.9 同程一面(JAVA、逆向 -北京)
投的不确定是什么,邮件发的是逆向,面的是java
1、java是面向顶层设计的,那么为什么有抽象类还需要有接口
2、为什么jkd1.8之后,接口中有了默认方法,有什么用意
3、java为什么是单继承的,不像C++一样是多继承的,这样设计有什么用意吗
4、java是面向对象的语言,为什么要有基本数据类型呢
5、java中基本数据类型为什么要有相应的包装类
6、浅拷贝和深拷贝
7、什么场景下用浅拷贝、什么场景下用深拷贝
8、线程安全怎么来进行一个实现
9、synchronized锁原理吗
10、CopyOnWriteArrayList和平常的锁(synchronized)适应场景
11、说一种,除了synchronized以外,jkd可以支持的锁场景
12、一台电脑上不同进程之间怎么来实现锁,(回答:redis全局锁)
14、一台电脑上,使用redis是不是有点太重了,还有其它方法吗?(我记得有一个信号量机制,但对这一块不是很了解)
15、系统调用函数了解了多少
16、多线程场景下,怎么来加锁(回答:没有涉及到共享资源,不用加锁,设计到共享资源,加锁)
17、那设计到共享资源,怎么来进行加锁呢
18、操作系统有了进程,为什么还需要有线程呢?
19、java中的死锁了解过吗?
20、那怎么解决死锁呢?怎么避免呢?
21、可以具体说一下怎么利用顺序获取锁来进行避免吗?
22、java里面的线程有几种状态?
23、操作系统中的线程状态和java中的线程状态有什么区别?
24、java中的线程需要操作系统级别的参与吗?(答:需要的,java中的协程是不需要的)
25、为什么协程不需要?
26、那协程怎么设计的,如果让你设计,你会怎么设计(提示被动打断、自动打断、python里面怎么设计的)
27、http1.1 http2.0都是基于TCP的,为什么http3.0要用UDP呢
28、get请求和post请求有什么区别
29、我什么ping的时候,不用指定端口号呢,是哪个进程给数据呢
30、java中的很多排序算法,最优是nLogn的,有没有更优的一种排序算法呢(答:基于时间进行排序)
31、有一个list数组,里面存储的对象,可以知道两两对象大小,怎么设计一个排序算法进行排序。那最低时间复杂度是多少呢?
#同程秋招##双非硕##一面##纯八股#