自我介绍实验室的研究方向项目介绍,详细一点,然后反问里面的实现问adhoc相关内容
网络层协议有什么?RIP和OSPF区别? 各自的过程,不会
说一下应用层协议有什么?挑一个说一下,反问了telnet,基于什么协议?
tcp的可靠性如何实现?
有序传输如何实现?
java:linkedHashMap与hashMap有什么区别?维护的顺序是键还是值的顺序?java保证线程安全的方式?syncizied是可重入的吗?什么是可重入? 不会
https://blog.csdn.net/w8y56f/article/details/89554060
数据库:对什么数据库比较熟悉?
四个事务隔离等级
什么是不可重复读和幻影读?
MVCC,下一键锁定?
详细说MVCC是怎么实现的
重做日志和撤消日志是做啥的?区别? 不会
#coding=utf-8
import sys
#str = raw_input()
#print str
class ListNode():
def __init__(self, value):
self.val = value
self.next = None
def deleteDup(head):
if not head or not head.next: return head
dummy = ListNode(-1)
dummy.next = head
p = dummy
cur = head
while cur and cur.next:
if cur.val != cur.next.val:
p = p.next
cur = cur.next
else:
val = cur.val
while cur and cur.val == val:
cur = cur.next
p.next = cur
return dummy.next
a = ListNode(2)
b = ListNode(2)
c = ListNode(2)
d = ListNode(3)
e = ListNode(3)
f = ListNode(5)
g = ListNode(8)
a.next = b
b.next = c
c.next = d
d.next = e
e.next = f
f.next = g
head = deleteDup(a)
print(head.val)
两种方法实现,分别计算一下时间复杂度
方法一:删除一行或一列
方法二:二分查找
#coding=utf-8
import sys
#str = raw_input()
#print str
print 'Hello,World!'
def bisec_left(nums, target):
if not nums: return -1,-1
if target < nums[0][0] or target > nums[-1][-1]: return -1,-1
m, n = len(nums), len(nums[0])
low, high = 0, m + n - 1
while low < high:
mid = low + (high - low)//2
if nums[mid//n][mid%n] < target:
low = mid + 1
else:
high = mid
return low//n, low%n if nums[mid//n][mid%n] == target else -1,-1
'''
1 2 3 4
5 6 7 8
一维数组
a =
0 5
p = 2
1 2 2 2 3 5
n * m
O(m + n)
反问了一下,分配什么部门?走什么技术栈?
这是统一招聘,面试完可以联系hr来要求去什么部门,走java技术栈,spring全家桶
自我介绍
实习内容介绍,反问,对面向对象的设计有什么考虑,比如设计类图
1:mysql如何实现原子性
扩展题:
2:mysql如何实现持久性
是利用Innodb的redo log。
当做数据修改的时候,不仅在内存中操作,还会在redo log中记录这次操作。
当事务提交的时候,会将redo log日志进行刷回磁盘(redo log一部分在内存中,一部分在磁盘上)。
当数据库宕机重启的时候,会将redo log中的内容恢复到数据库中,再根据undo log和binlog内容决定回滚数据还是提交数据。
3:mysql如何实现隔离性
四种隔离级别
4:mysql如何实现一致性
从数据库层面,数据库通过原子性、隔离性、持久性来保证一致性。也就是说ACID四大特性之中,C(一致性)是目的,A(原子性)、I(隔离性)、D(持久性)是手段,是为了保证一致性,数据库提供的手段。
从应用层面,通过代码判断数据库数据是否有效,然后决定回滚还是提交数据
事务隔离级别,可重复读与可串行化。
幻影读的概念
Mysql怎么解决幻影读?
next-key lock锁是自动加的,那可串行化与可重复读是达到一致的效果吗?还有其他区别吗? 不会
参考:https://www.cnblogs.com/zhoujinyi/p/3435982.html
可串行化的本身是为了达到什么样的目标?到底是什么意思? 不会
可串行化是强制事务串行执行,避免幻影读的问题,通过加锁来实现,会在读取的每一行数据上都加锁,所以可能会导致大量的超时和锁争用问题,实际应用中很少使用这种隔离级别,只有在非常需要确保数据一致性并且可以接受没有并发的情况下才会考虑这种隔离级别
我们把一次完整的 请求+响应 称之为 “HTTP事务”
事务就是完整的一次操作,请求和响应缺一不可
扩展题:完整的HTTP事务是怎样的一个过程? 就是输入url的全过程
a. 域名解析
b. 发起TCP的3次握手
c. 建立TCP连接后发起http请求
d. 服务器端响应http请求,浏览器得到html代码
e. 浏览器解析html代码,并请求html代码中的资源
f. 浏览器对页面进行渲染呈现给用户
无状态是指:无记忆性,同一个客户第二次访问服务器上的同一个页面时,
服务器的响应与客户第一次访问时一样,因为服务器不记得这个客户曾经访问过,
也不记得这个客户访问过多少次。
也就是说每个请求都是独立的,与前面的请求和后面的请求都是没有直接联系的。
HTTP一直是无状态的,但是应用服务为了有状态,就给HTTP加了cookie和session机制,让使用http的应用也能有状态,但http本身还是无状态
扩展题:http的持久连接与非持久连接
对REST了解吗? 不会
操作系统:
进程与线程的区别
线程切换的开销更小,为什么?
线程的状态
限期等待与无限期等待是什么?
什么时候进入阻塞状态呢?
join()方法是做什么的? a.join(b) 是什么意思? 刚好今天看到面经了, 这个面试官真好,不会的时候会写个例子来提示你,引导你
死锁的必要条件
死锁避免,谈了银行家算法,反问还有什么其他的吗?我没弄懂是问死锁预防还是死锁避免?导致面试官一直追着问还有其他想法吗?
死锁预防?面试官提示可以破坏四个必要条件,然后说破坏循环等待条件是做什么?
算法题:实现堆排序,写出来了,但是解释的不是很清楚
字节实习面试问过,幸好准备了!
一直追着问我的细节,导致我自己感觉解释的不是很清楚,再回顾一下啊!
比如是自底向上冒泡最大值,为何while循环是自顶向下调整的?
调整堆是怎么调整的?
def adjustHeap(arr, parent, length):
temp = arr[parent]
child = parent * 2 + 1 # 数组下标从0开始,左儿子
while child < length:
# 判断左子节点和右子节点的大小,若右边大,则把child定位到右边
if child + 1 < length and arr[child] < arr[child + 1]:
child += 1
# 若child大于父节点,则交换位置,否则退出循环
if arr[child] > arr[parent]:
arr[parent] = arr[child]
parent = child
child = parent * 2 + 1
else:
break
arr[parent] = temp # 调整到合适地方了!
def heapSort(arr):
# 构建大顶推,从最下面的非叶子节点开始向上遍历
for i in range(len(arr)//2 - 1, -1, -1): # 左闭右开区间
adjustHeap(arr, i, len(arr))
# 循环执行以下操作:1.交换堆顶元素和末尾元素 2.重新调整为大顶堆
for i in range(len(arr) - 1, -1, -1):
arr[0], arr[i] = arr[i], arr[0] # 把最小值
adjustHeap(arr, 0, i) # length为开区间
nums = [3,2,5,8,1]
heapSort(nums)
print(nums)
def adjustHeap(arr, parent, length):
temp = arr[parent]
child = parent * 2 + 1 # 数组下标从0开始,左儿子
# 自顶向下调整
while child < length:
if child + 1 < length and arr[child] > arr[child + 1]: # 改变符号
child += 1
if arr[child] < arr[parent]: # 改变符号
arr[parent] = arr[child]
parent = child
child = parent * 2 + 1
else:
break
arr[parent] = temp # 调整到合适地方了!
def heapSort(arr):
for i in range(len(arr)//2 - 1, -1, -1): # 左闭右开区间
adjustHeap(arr, i, len(arr))
for i in range(len(arr) - 1, -1, -1):
arr[0], arr[i] = arr[i], arr[0]
adjustHeap(arr, 0, i) # length为开区间
nums = [3,2,5,8,1]
heapSort(nums)
print(nums)
作者:sagii
链接:https://www.nowcoder.com/discuss/470177?type=all&order=time&pos=&page=1&channel=666&source_id=search_all
来源:牛客网
1、ARP协议,怎么工作的、属于哪一层,为什么属于数据链路层,数据链路层会认识ip地址吗
2、ICMP了解吗?是做什么的?ping的具体过程?
3、DNS解析过程
4、了解TCP协议吗
5、UDP协议为什么能实现广播
6、详细说一下tcp的拥塞控制
7、说一说数据库建表的范式规范,什么是外键约束?第一范式第二范式第三范式
8、说自己的项目
9、zk做服务发现,如何发现这个服务是activate的,服务下线的话,zk怎么观察到服务的变化,dubbo接口的服务调整,服务上下线,zk怎么应对。
10、AOP的原理
11、对java的语言特性
12、java虚拟机是平台相关的吗
13、链表排序
作者:3213112121
链接:https://www.nowcoder.com/discuss/477503?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
一面
二面
疯狂mysql
作者:ITBAI
链接:https://www.nowcoder.com/discuss/471168?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
8.8一面
1.自我介绍
2.实习期间的内容,做了哪些事情,挑一个项目讲解
3.mysql索引数据结构,事务隔离级别,解决幻读方式
4.redis分布式锁流程,如何解决缓存雪崩问题
5.dubbo用到的协议,http和dubbo协议的区别
6.zookeeper中的节点类型,服务端宕机后zk发生的变化
7.http和https区别,握手方式,加密方式,如何加密
8.http2.0和http1.0区别,http2.0可以推送弹幕消息吗
9.java线程池,拒绝策略
10.保证线程安全的方式,CAS优化,AQS,以及AQS是否可以实现非公平锁
11.JVM内存模型,分代收集算法,什么时候分配在栈,什么时候分配在堆,内存泄漏出现的场景
12.最长回文串,最大正方形面积
8.14二面
1·自我介绍,项目以及实习
2.mq在项目里面的业务场景,事务性,如何消费的
3.ack具体机制
4.保证不重复消费
5.java反射机制,泛型
6.mysql索引,聚簇非聚簇,联合索引,索引失效,索引下推等
7.sql语句解析
8.BST中k大node,下一个最大排列
作者:dlwlrma21
链接:https://www.nowcoder.com/discuss/477262?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
1.面试官介绍面试流程
2.自我介绍
基础:
1.TCP粘包
2. HTTP状态码
C++:
3. extern “C”
4. 重载,编译时多态
5. 多态的实现
6. 为什么父类的析构函数最好是虚函数
7. 什么时候使用纯虚函数
Java:
8. volatile的作用
9. 工作内存
10. 注解
11. 反射
12. 动态代理
算法:
13. 无序数组中找出第K大的元素(问了建堆的复杂度和算法整体的复杂度,然后面试官看不懂我写的代码,我????)
14. 反转链表中节点i到节点j(考虑ihej的边界问题,问到了算法复杂度)
作者:成龙的成
链接:https://www.nowcoder.com/discuss/471485?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
自我介绍
http请求中get和post的区别
线性结构和非线性结构有哪些,区别是什么。
操作系统中中断的概念
进程和线程的区别,多线程共享进程资源时候可能遇到的问题及解决方案
然后就是手撕代码了:
第一个是整数数组拼接成最小数
第二个是顺时针递增打印数组
作者:芒果味的周俊杰
链接:https://www.nowcoder.com/discuss/471145?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
1.自我介绍
2.实习项目,项目难点
3.很久之前做的秒杀项目,问现在再来看这个项目,有哪些地方会有问题,改进,优化;
4.进程和线程的区别,进程的通信方式
4.Tcp和udp区别,应用场景
5.DNS解析属于TCp还是udp,Dns解析过程
6做题,判断两个字符串是否是相似字符串,相似的含义是只允许交换一次字符串的两个位置,使得和第二个字符串相等,那么他们就是相似的。
面试官给的测试用例:
相似字符串
ab, ba => true
abax, abax => true
abc, abc => false
aac, abc => false
作者:ccccccuuuuurrrrry
链接:https://www.nowcoder.com/discuss/476067?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
自我介绍
项目相关,难点,一致性如何保证
mmap,NIO,Direct IO有什么区别?Direct IO可以直接落盘吗?
mmap减少了哪一次拷贝?整个的流程
TCP为什么是可靠的
拥塞控制
TCP与UDP区别
加锁的方式,synchronized与lock的区别
synchronized详细的原理,其他未获取锁的线程会阻塞在哪里
锁释放后,其他线程是如何竞争的??
假设要求线程t1执行完后,线程t2才能执行,有哪些实现方式?
ThreadLocal相关
SimpleDateFormat线程安全吗?为什么
String,StringBuilder,StringBuffer
Servlet生命周期
JVM垃圾回收,CMS,哪些阶段STW
HashMap一个线程正在扩容,另一个线程在加数据,另一个在删数据,如何处理?
1.8的HashMap的线程不安全体现在哪里
Mysql隔离级别,都解决了什么问题?幻读与不可重复读有什么区别
MVCC具体原理,ReadView
解决了幻读吗?为什么?
算法题:搜索旋转排序数组
如果数组中有重复的元素,如何修改代码(后来发现这也是leetcode上的)
作者:uestc薛定谔的猫
链接:https://www.nowcoder.com/discuss/470425?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
自我介绍
设计模式的基本原则 5个
线程同步有几种方法
互斥量和信号量的区别
http和https 的区别
场景题一个电脑接入局域网后分配一个IP地址,这个是怎么实现的
公网设备是怎么访问内网的设备,有什么技术可以实现
算法题:给一个整形数组,要求分为两部分,第一个部分的元素的最大值比第二部分的最小元素要小,要求左边部分的范围近可能的短,输入第一个部门的长度,比如[1,1,1,0,6,7,12]长度输出4,这个想了一下没有思路,面试官降低难度给了下面一个题目
同样给了一个整型数组 [100,2,1,4,3,3,101,200] 从这个数组找到连续元素的长度,比如1,2,3,4 最长输出4。
作者:dreamoffer
链接:https://www.nowcoder.com/discuss/471107?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
面试官非常不错,很有耐心的
1.自我介绍
2.进程和线程的区别
3.进程间通信方式
4.GET POST区别(URL编码,记错了)
5.HTTP还有哪些方法
6.HEAD方法可以讲一下吗
7.HTTP和HTTPS区别
8.证书是什么
9.java有哪些锁(悲观乐观,自旋互斥,读写锁)
10.悲观锁乐观锁区别(认位操作数据时,别的线程不会修改,只在提交时做个比较。悲观认为别人会修改,全程锁)
11.自旋锁和互斥锁
12.HTTPS传输过程中,之后的方法是对称方法还是非对称(大概这意思)
13.算法题:
1.删除倒数第K个节点,需要注意边界和异常处理(被怼了):例如检测head是否为空,K是否超过链表长,K是否刚好等于链表长
2.Z字打印二叉树
我的算法题都不难,但是异常边界处理平时注意太少了,一般感觉算***就行了,很少考虑这个,被怼了
作者:随心的小新
链接:https://www.nowcoder.com/discuss/471164?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
首先上来万年不变的自我介绍。接着介绍一下项目
1、http的幂等性问题,网络框架以及各层之间的协议都有什么?
2、redis的分布式锁,超时时间以及时间续约?
3、线程安全问题?线程安全问题怎么去解决
4、死锁?死锁的必要条件?怎么去预防续约以及死锁之后的解决方法?
5、synchronized之后的1.6之后的升级过程,以及与lock的区别?
6、RbbbitMQ的一个重复推送问题怎么解决?它都有哪种模式?
大概就是这么些东西吧。
最后放个大招。手撕八皇后问题。有点猛。
作者:那咋办嘛。。
链接:https://www.nowcoder.com/discuss/470709?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
1.采用jdbc访问数据库的过程;
2.线程池;
3.DNS协议;
4.没有网卡,本地有ip缓存,能否命中ip,能否发送数据;
算法题:
1.给一个链表,链表中有重复节点,偶数个的删除,奇数个的保留一个;(面完才想起HashSet。。。。。。)
2.合并区间
作者:123456lmliang
链接:https://www.nowcoder.com/discuss/470268?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
1.syncrhroniz的介绍,原理,可重入性
2.volatile的原理
3.start和run方法
4.object的常见方法(回答不是很好,没有全部说完)
5.重写equals和hashcode
6.写一个单例模式
7.计算小岛数量
作者:shangjiang
链接:https://www.nowcoder.com/discuss/229923?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
一面:
1、你在项目在遇到过最困难的事。
2、操作系统、网络原理、编译原理。。。你最擅长哪个?(网络?)
3、浏览器的地址栏里输入一个url,点一下回车,会发生什么?
(1)浏览器怎么得到url?
(2)DNS解析是发送整个url吗?
(3)DNS解析详细过程。
(4)TCP三次握手之前需要什么?
(5)ARP解析过程。
(6)ip怎么寻址?
(7)TCP第三次握手的作用是什么?
(9)TCP连接建立之后呢?
4、算法题:单链表,翻转n-m段链表。
5、算法题:给出有序数组和target求距离target最小的位置(min distance index)。
作者:chips_xx
链接:https://www.nowcoder.com/discuss/470970?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
1.项目相关
2.你知道哪些线程池?
3.线程池参数以及线程池的流程
4.线程池的抛弃策略
5.停止线程池,停止时会接新的任务嘛?
6.get和post的区别,post一定会发两个包嘛?
7.还有什么请求方法
8.http与https的区别
9.主键索引和唯一索引的区别
10.索引结构,b+树是怎样的结构,b树与b+树的区别
11.数据库的隔离级别,每种级别会存在什么问题
12.讲一讲gap lock和next-key lock,具体是怎么锁的,比如age=20,锁的是id还是age
13.联合索引最左匹配的使用
14.MVCC
15.redis的数据类型
16.hash,set,zset的使用场景
17.zset内部实现
18.TCP的拥塞控制
19算法题:topK
20.反问
作者:JunleRao
链接:https://www.nowcoder.com/discuss/471090?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
面试官人特别好,给了很多的提示,一直引导自己,面试的感觉非常nice!
主要是问项目,基础知识、手撕代码?
简单的自我介绍?
讲一下单体登录?
zookeeper用来做什么?
CAP理论?
什么是SaaS?
微服务和单体的区别?
分布式的数据一致性问题?怎么避免?(以上都是项目相关的)
java的异常体系?项目中是怎么使用异常的?受检非受检?
讲一下java的反射?
框架中什么地方用到了反射?
讲一下SPring的IOC?
java线程的状态和怎么转化的?
一个等待获取synchronize锁情况下,该线程处于什么转态?同步阻塞
调用线程的start方法后再调用一次会怎么样?
Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常,多次调用start被认为是编程错误。
讲一下对池化技术的理解?
怎么实现一个线程池?工作线程,任务队列?
如果任务队列是空的,线程池中的核心线程是什么状态?
阻塞和非阻塞?同步和异步?Java的线程模型?
代码:输入两个数组,从两个数组中各取一个值,输出两个值的和为0的所有组合并需要去重。
示例:输入: nums1={1 ,-1,0,0},nums2={-1,-1,0,1} ,输出:{{1,-1},{0,0}}
作者:GreatGeek
链接:https://www.nowcoder.com/discuss/471211?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
一、自我介绍
二、进程通信有哪几种方式?
三、线程的几种状态,线程池中的空闲的线程处于什么状态?
停止,Parked(此状态必须明确,与字面意思不同,主要是指线程空闲时候的状态.如在线程池中,当线程被调用使用后再次放入到池子中,则其状态变为了Parked)
四、说一下 volatile 关键字(其中问到我 JMM 中线程的工作内存是哪一块内存?)
主内存:其实就是JAVA堆内存,里面存放着程序中所有的类实例对象等变量,属于线程共享的。
工作内存:工作内存存放的是线程从主内存中拷贝过来的变量副本以及访问方法所得到的局部变量,是线程私有的。
所以当线程操作某个对象的时候,会先从主内存复制该变量到自己的工作内存,然后执行相应逻辑,改变变量,最后再把工作内存中的变量新数据刷新回主内存。
五、操作系统是如何管理内存的?
六、比较分页与分段
七、说一下 MySQL 的索引是什么结构的?
八、B+ 树与 B 树的比较
九、手撕代码(设计一个循环队列,能够重复利用队列里面的元素)
许愿二面!
8月8号 14:00
面试了一个小时
自我介绍
深挖项目点
算法:leetcode 986 区间列表的交集
作者:张志恒
链接:https://www.nowcoder.com/discuss/470707?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
1 项目 消息加入异步队列超时或者失败,你是怎么处理的
2 redis做持久化了吗,怎么保证rdb的完整性
3 redis淘汰策略
4 redis怎么实现事务
5 数据库 事务隔离级别
6 索引为什么用b+树 不用hash 不用平衡二叉树
7 自己用过的索引讲讲
8 linux top命令 具体CPU负载是怎么计算出来的 (不会)
怎么查看端口 netstate
9 http状态码
10 cookie session讲一下
11 算法题
1 矩阵顺时针翻转90度
2 从n到m翻转链表
作者:咸鱼咕咕咕
链接:https://www.nowcoder.com/discuss/470695?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
0、项目&实习
1、redis在项目中怎么使用的?基本数据结构?
2、redis实现分布式锁?
3、Kafka、RabbitMQ、RocketMQ的优缺点,怎么选择?
4、计网、操作系统、数据库那个最熟悉?
5、Mysql的事务隔离级别?脏读、幻读、不可重复读?
6、当插入一个新的数据时候,Mysql的索引需要变更时是怎么保持高性能的?
7、介绍一下binlog
8、InnoDB为什么用B+树做索引,为什么不用B树,红黑树
9、CMS和G1的优缺点,G1能百分百保证在指定时间内完成回收吗
10、Java怎么实现定时任务
算法题:1、字符串相加 2、整数拆分,要求用动态规划。大概问问题20分钟,代码20分钟。
面的时候巨卡,恨不得一分钟卡顿一次感觉凉凉
猿辅导一面面经 2020/8/7
1.自我介绍
2.项目
3.给一个二叉树,返回max(深度,宽度)
4.线程、进程
作者:达尔文的猹
链接:https://www.nowcoder.com/discuss/470045?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
面试官有点年轻,感觉很友善体验不错。
自我介绍,谈笑风生。
项目聊了10分钟。
对多态的理解。
多线程怎么搞?Thread,Runnable,线程池。
HTTP Get与Post区别。
HTTPS聊一下。
对JVM的理解。这里谈到了编译的问题。
聊一聊JVM的编译怎么搞的?
聊聊熟悉的垃圾收集器。
MySQL事务,隔离级别,隔离级别的实现方式。
进程线程区别。
代码:求一个数的平方根,精确到0.01。
面试官太棒了,写代码一直指引,后来慢慢写到了最后。。但是不知道为啥没测试成功。面试官说大概是这样的,啊,太菜了。。希望有下一面啊。。
啊。。猿辅导面试体验太好了。面试官贼棒。
没有自我介绍,后面的问题全是根据项目来问的,包含 Redis 和 Kafka 的东西,Kafka 聊了很久。
问了一下 MySQL 的幻读以及 For UPDATE 会不会触发间隙锁,这里没答起。
问了一下 Spring中的问题,一开始也尬住了,面试官提示想想 AOP,
然后回答了。
代码:LeetCode143。写完之后快没时间了,面试官就问了一下我如何去测试这个代码。
啊体验极佳,不知道的就会引导。希望有下一面啊。。
作者:一只小菜狗
链接:https://www.nowcoder.com/discuss/470195?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
自我介绍
实习,做了哪些工作,收获,如果离职了你怎么把你的工作接给下个人,项目文档一般都写什么
抽象类和接口的区别,什么场景使用抽象类比较好
new Integer(1) 和Integer.valueOf(1)的区别是什么
索引是什么,索引为什么快
主从数据库的好处
Linux介绍一下,用Linux干过什么事,用过哪些指令
接口设计的幂等性
说一下springIOC
介绍一下redis,为什么用redis,你项目中redis用来干什么
redis数据类型
redis持久化是什么,持久化的方式都有哪些
redis的内存淘汰策略(回答lru,成功埋坑)
http的状态码都有哪些,5开头的状态码表示什么
观察者模式和发布订阅模式的区别
单例模式都有哪些实现方式
微服务了解吗
算法题:手撕lru
能想起来就这么多了,实在太难了,好多简历上没写的都问了,一面看来主要是考察知识广度,基本没深问,但是问的知识面涉及特别广,然后面试官说,你刚才说redis的内存淘汰策略是lru,那么你就实现一个lru吧,不能使用LinkedHashMap,ps:写完了还要从头说一下实现思路。
自我介绍
介绍下OSI七层模型
http1.0 1.1 2.0区别
网卡在哪一层? 路由器在哪一层?
Mysql的隔离级别?脏读、不可重复读、幻读
手撕代码:
之字形打印二叉树
字符串还原成ip地址
作者:渣硕东
链接:https://www.nowcoder.com/discuss/394718?type=post&order=time&pos=&page=1&channel=666&source_id=search_post
来源:牛客网
感谢牛客网上的面经,以下是我的面试内容,时间有长了,记得大概。
面试官都特别的nice,卡住的时候会给你引导
一面:
上来手撕二道代码题:旋转数组和二叉树的镜像(递归和非递归)
操作系统:进程调度、fork函数的工作原理
linux:chmod命令、chattr命令、文件的权限
二面:
计算机网络:http、https协议,tcp、udp协议,tcp为什么可靠、socket编程的流程
操作系统:线程池
还问了些C++的基础知识,类的生命周期、虚函数等
代码:中序遍历、二叉树中的最长路径
三面:
数据库:事务的特性、IO模型(阻塞和非阻塞)、读写锁
计算机网络:https为什么是安全的,SSL工作原理,数字签名,对称加密和非对称加密
还有些问题不记得了
代码:二叉搜索树中删除指定节点
2019年的面经
https://www.nowcoder.com/discuss/392465?type=post&order=time&pos=&page=1