SSM
原子性,一致性,持久性,隔离性
标记-清除算法(Mark-Sweep)
复制算法(Copying)
标记-整理算法(Mark-compact)
分代收集算法
4 中方式创建
操作系统线程
标记-清除算法(Mark-Sweep)
复制算法(Copying)
标记-整理算法(Mark-compact)
分代收集算法
通过cookies和seeion
一个进程至少包含一个线程
Java 中有八种基本类型,分别是byte, short, int, long, char, float, double, boolean
四种方法
freewheel的实习同样走过了hr面,到了录用审批,hr还加了我的微信,可惜最后依然没有过,因为hc只有一个,给了一个北邮的同学。
ifconfig
free -h
1. 自我介绍
2. 介绍项目
3. hash加密用的是什么加密算法
4. 三次握手的过程
5. syn和ack号码的关系
6. http get和post的区别
7. java反射可以获得类的什么?
8. 乐观锁和悲观锁的区别
9. where和having的区别
10. redis持久化的方法
dis 的持久化有两种方式,或者说有两种策略:
1、RDB(Redis Database):指定的时间间隔能对你的数据进行快照存储;
2、AOF(Append Only File):每一个收到的写命令都通过 write 函数追加到文件中。
11. java volatile关键字
12. spring的入口什么?
13. List、set、Map的区别
14. linux查看进程
top和ps -aux
1. java运行时数据区
2. 程序计数器的作用
当前线程所执行的字节码的行号指示器
3. 虚拟机栈里放了什么
描述的是Java方法执行的内存模
型:每个方法在执行的同时都会创建一个帧栈(Stack Frame)用于存储局部变量表、操
作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着
一个栈帧在虚拟机栈中入栈到出栈的过程。它的线程也是私有的,生命周期与线程相同。
4. 类加载器的双亲委派
如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把这
个请求委派给父类加载器去完成。每一个层次的类加载器都是如此,因此所有的加载请求
最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载
请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。
5. 为什么需要双亲委派
Java 类随着它的类加载器一起具备了一种带有优先级的层次关系。 例如:类
java.lang.Object,它存放在 rt.jar 中,无论哪一个类加载器需要加载这个类,最终都是委
派给处于模型最顶端的启动类加载器进行加载,因此 Object 类在程序的各种类加载器环境
中都是同一个类(使用的是同一个类加载器加载的)。相反,如果没有使用双亲委派模
型,由各个类加载器自行去加载的话,如果用户自己编写了一个 java.lang.Object 类,并
放在程序的 ClassPath 中,那么系统将会出现多个不同的 Object 类,Java 类型体系中最
基础的行为也就无法保证,应用程序也将变得一片混乱。
3.3 双
6. redis主从结构
7. redis哨兵的作用
8. 从浏览器中输入url之后发生了什么
9. ConcurrentHashMap的实现
10. java线程有多少种状态
六种状态
11. wait和sleep的区别
12. java线程通信同步有几种方式
13. java4种线程池分别是什么
14. CMS收集器和G1收集器的区别
15. spring bean的生命周期
16. 精通哪些消息队列???
17. 精通哪些大数据工具???
18. 精通哪些分布式框架???
2个面试官轮流提问。
1、自我介绍
2、每个项目都做了什么
(那时候我还没去实习,写了好多项目,小的也写上了)
3、知识图谱如何实现。
4、面向对象的特性。
(封装、继承、多态)
5、接口和抽象类的区别。
6、事务的特性。
7、三次握手四次挥手。
8、进程和线程的区别。
9、说说你知道哪些数据结构?
10、项目中用了哪些设计模式?
11、都是怎么用的?
12、解释装饰器模式?(之前没说这个)
13、设计题:10亿个数快速寻找中位数
1、自我介绍。
2、介绍项目。
3、介绍所用技术。
4、对string类的理解。接口和抽象类的区别。
5、静态变量存放在内存哪个区域?
方法区
6、有一个public static final的HashMap,里边对象的属性能不能修改?
可以
7、说出6种常见的java异常。
1.NullPointerException: 空指针异常
2.ClassCastException: 类型强制转换异常
3.ArrayIndexOutOfBoundsException: 数组下标越界异常
4.ArithmeticException:算术运算异常
8、多线程如何保持同步?
9、java可见性的关键字及其原理。 volitile
10、HashMap的实现原理、ConcurrentHashMap的结构、插入和查询的流程。
11、怎么查看java虚拟机内存占用?
12、JAVA内存如何分配?
13、堆区内存如何分配?
14、程序计数器的作用?
15、垃圾回收算法和流程。
16、如何减少full gc的次数?
17、方法区是否需要gc
不需要
18、类加载的流程。
三种类加载器
21、双亲委派模型。为什么使用双亲委派模型?
3.1 双亲委派模型的工作过程:
如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把这
个请求委派给父类加载器去完成。每一个层次的类加载器都是如此,因此所有的加载请求
最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载
请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。
3.2 使用双亲委派模型的好处:
Java 类随着它的类加载器一起具备了一种带有优先级的层次关系。 例如:类
java.lang.Object,它存放在 rt.jar 中,无论哪一个类加载器需要加载这个类,最终都是委
派给处于模型最顶端的启动类加载器进行加载,因此 Object 类在程序的各种类加载器环境
中都是同一个类(使用的是同一个类加载器加载的)。相反,如果没有使用双亲委派模
型,由各个类加载器自行去加载的话,如果用户自己编写了一个 java.lang.Object 类,并
放在程序的 ClassPath 中,那么系统将会出现多个不同的 Object 类,Java 类型体系中最
基础的行为也就无法保证,应用程序也将变得一片混乱。
22、mysql有几种锁?怎么实现?
23、mysql mvcc?
24、你用的mysql存储引擎?为什么选择它?实现原理?
25、innodb事物的级别
26、b加树的结构?与二叉树的区别?与b树的区别?
N叉平衡树
27、redis数据结构?单线程还是多线程?
28、cpu密集型多线程和io密集型多线程的比较。
29、cpu密集型里如何管理多线程?
30、用什么样的线程池和阻塞队列?
31、cpu线程特别多会产生什么问题?
32、io密集型里怎么减少需要的线程数?
33、io多路复用的原理和实现。
34、这个还不够,怎么减少处理io(和磁盘io交互)所需要的线程?
35、用什么样的队列?你是怎么实现?
36、(我回答的redis的list实现的)这种队列有什么缺点?
37、既然有这样问题,为什么不用rabbitmq?(我说我偷懒了。。。)
38、io量很大,队列很长怎么办?
39、如何分布式存储?
40、你还有什么问题问我?
问基础知识,不是特别简单,需要知道一些原理和实现。整体难度和vivo类似。
涉及到网络协议、mysql、多线程、类加载、gc、hashmap、红黑树、b加树、手写设计模式、spring启动原理等方面的各种知识。
详细询问简历上的内容,包括科研,项目和实习。从你用的模型,框架,数据库,缓存等各方面仔细地问,包括原理还有实现,还会给项目出新的情景问题(需求)问你的解决方案。还有关于redis和mysql的各方面包括实际应用问了很多。
从各个方面聊你的生活情况,人生规划等。我感觉展现真正的自己,实话实说就好。
主要的GC算法包括:标记清除方式、复制收集方式、引用计数方式。
用于存储局部变量表、操
作数栈、动态链接、方法出口等信息。
前者是方法,后者是类
Wait 是Object方法的
作者:shangjiang
链接:https://www.nowcoder.com/discuss/285285?type=2
来源:牛客网