蔚来-Java后端开发+后端开发数字化-一面
1、自我介绍
2、在学校是怎么学习编程语言的?(提了一嘴jvm)
3、JVM是什么?
4、线程抢占jvm参与了吗?(原问题记不清了,我回答的有序性是因为jvm重排序导致的)
5、假设一个单核cpu的情况下,gc和用户线程是如何调度(抢占?)的(我回答的如果像是serial垃圾收集器会stop-the-world,然后进行gc)
6、进一步,如果单线程没有stw的情况下,用户线程和gc如何抢占?(不清楚)
7、知道哪些IO?
8、select、epoll属于哪个IO?(已经开始晕了,回答了个不清楚)
9、假设使用键盘输入abc,从输入到显示出来经过了什么?(懵了,猜了一个会有IO缓冲)
10、进一步,操作系统角度来说,IO缓冲会如何被使用?(不清楚)
11、知不知道dma?(不知道)
12、用户态和内核态
13、那么键盘输入涉不涉及特权指令?(懵,不清楚)
14、线程阻塞的时候,操作系统调用的时候如何知道是哪个?(不是线程调度算法,是os如何判断回调哪个线程,说得很模糊我也很懵)
15、问一些Java吧,String a = "abc", b = "abc",a和b指向的地址是一样的吗?
16、那么操作系统如何区分a,b这两个变量呢?(不清楚)
17、再执行b="abcd",b的变量地址和内存地址变化吗?
18、Java中有哪些锁?
19、synchronized底层原理(mutex lock)
20、数据库的范式(回答了第一第二第三范式)
21、BC范式
22、如何判断一条sql走了哪些索引
23、数据库事务
24、MVCC在读已提交和可重复读情况下实现有什么区别?(不清楚,说了MVCC的定义,面完才想起来是read view那块)
25、MVCC原理
26、MVCC如何避免幻读
27、手撕:单例模式、冒泡排序(问比较执行多少次?时间复杂度,如何优化)
3、OAuth2.0
4、Redis过期键删除策略
5、Redis持久化
6、Nginx怎么用的
7、Nginx负载均衡
8、一致性哈希算法(没接触过不清楚)
9、Linux查看进程的命令
10、Linux如何按照内存(M)或者cpu占用(P)排序查看进程(这个是真的不记得了)
11、Linux实时查看日志文件命令(watch -n)
12、什么情况下适合建索引?什么情况下不适合建索引?
13、MySQL事务的ACID
14、进程通信的方式
15、HTTP状态码504
16、对于高并发场景下,需要考虑哪些问题?
17、如何使用redis处理以上问题。
18、docker file?(没用过不知道)
19、概率题:4个人中,至少两个人生肖相同的概率。
没有反问,其实面试官挺好的,最后概率题一开始列的式子写错了,提醒了一下才写对。