感谢牛客!附猿辅导服务器一二三面面经
感谢这两个月来牛客的帮助~
今天接到oc,岗位是服务器端开发
我的一面二面是连着的,邮件上写的面试时间90分钟
一面3月21日 45分钟
一面挺基础的,没有往深的问,自己说完就过下一题了
Arraylist和linkedlist区别
hashmap 底层实现和put的过程
hashmap扩容过程
数据库索引数据结构,B+和B树的区别,事务隔离级别和会出现的问题,RR隔离级别如何实现
虚拟地址讲一下
进程和线程概念,进程间通信方式
线程池参数,排队策略
手撕:二叉树第k层节点数(秒了)
手撕:target:7,数组:[2, 3, 1, 6],问和为target的全部组合,可重复使用数组中的元素。(dfs)
10分钟后二面 45分钟
servlet生命周期(因为我项目中用到了),servlet是干什么的
REST API你认为有什么特点
HTTP有无状态,如何保持状态
cookie和session的存放位置,cokkie在客户端能被修改吗?
分布式session 不一致的解决方案(回答一致性hash,但自己没说明白)
说说你理解的JMM(多线程情况下的内存模型)
多线程不加锁为什么会出错(举个例子),多线程这一块都是一些比较开放的问题
volatile的作用
手撕:输出二叉树节点数最多的那一层的节点数(跟一面的手撕几乎一样)
手撕:sort by two stack (我一开始说用选择排序的思想,面试官说效率不高,可以用冒泡的思想,面试官给提示了一下过程然后写出来了)
三面 3月25日 45分钟
三面应该是个leader
问我熟悉那一块(集合,数据库,多线程)
hashmap 1.7到1.8的改动(我说解决多线程扩容死循环和加入红黑树,但是如何解决死循环我并没有看,我一顿乱说 面试官最后说我没有讲清楚)
数据库redo log,undo log的作用
binlog是干嘛的
锁有几种,乐观锁 悲观锁都说一说
手写一个单例,说说哪里重排序
linux中进程创建过程,线程创建过程(完全不会,哭了)
进程调度有哪些
最近在看哪些书或者学什么(我说redis)讲讲怎么学的,学到了什么。
手撕:递增的shifted array里面找大小离target最近的元素的位置,如果有两个返回两个(binary search,但是有corner case没考虑到)
eg. [6, 8, 9, 2, 3],target=7,结果就是0和1