有赞一面面经
有赞一面(时间 70min)
-
自我介绍。
介绍了一下自己,比赛经历啊,获奖啊,项目啊,实习啊什么的。
-
问第一个项目,是什么,怎么划分模块,现在重新设计你会怎么做,如何提高性能。
-
问第二个项目(重构了旧项目),怎么提高效率的,怎么提高了可维护性。
项目就不说了,每个人都不一样。
-
HashMap get方法的过程。
传入 key,得到 hashcode,rehash 拿到 hash 值,定位到 bucket,如果是链表或者红黑树,就遍历取值,如果不是就直接返回结果。
-
为什么 1.8 要使用红黑树代替长链表,什么时候切换为红黑树
链表长度为8 的时候,转为红黑树,红黑树查询效率比链表高。
-
jvm 数据区怎么划分。
线程可见:堆,方法区。线程隔离:虚拟机栈,本地方法栈,程序计数器
-
堆分为哪几个代,为什么要分两个 s 区。
新生代,老年代,永久代。因为新生代采用改进的复制算法进行垃圾回收。
-
并发了解么,怎么创建线程。五种状态之间的切换。
继承 Thread;实现 Runnable;实现 Callable;准备,就绪,运行,阻塞,结束;
-
Synchronized 有什么用,怎么用。
发生静态条件时,保证数据一致性。类,方法,代码块。
-
Lock 了解么,重入锁和 Synchronized 有什么区别。
支持公平锁非公平锁;新的等待唤醒机制 Condition;可中断;基于 AQS 实现,3个内部类。
-
多线程自增一个数字有哪几种方式。
加锁,volatile,Atomic
-
Atomic 怎么实现的,CAS 了解多少。
CAS 原子操作,Unsafe 类,ABA 问题。
-
数据库为什么要进行读写分离,有什么好处。
降低单一数据库压力,职责分明,便于分别扩展。
-
读库和写哪个作为 master。
写库,因为主库要有最新数据。
-
用过哪些开源框架或者产品。
各种开源框架扯一遍。
-
为什么 springboot 现在很受欢迎。
简单,快速,springcloud 的基础 巴拉巴拉。。。
-
遇到的最大的困难,怎么解决的。
- 在xx实习过程中的收获是什么。
- 有没有什么你擅长的但是我没问到的?
- 职业规划是什么。
-
有什么要问我的。
有赞技术栈,开源产品,公司氛围,自己的表现。