虾皮面经收录

1.

作者:牛客848145745号
链接:https://www.nowcoder.com/discuss/775154?type=post&order=recall&pos=&page=0&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

一面 9.14
实习项目
redis
redis基本数据结构
redis过期key如何实现
redis过期删除策略
redis持久化以及开启方式
内存淘汰机制
zset 应用场景与底层实现

golang
goroutine最小内存
gmp 模型
context 作用
channel 创建方式 有无缓冲区的区别
interface 实现多态
golang与JAVA接口区别

计网

TCP可靠性(答的很细很全面)
TCP粘包问题

算法

整数反转

……太久了有挺多都忘记了

二面
项目(自己做的,实习做的)问的很细
项目的时候会穿插几个常规问题(数据库三范式、索引……)
9亿IP包含重复的集合 得到非重复的IP集
数据流取前10大的数
算法
字符串转整数 itos

hr面
学籍信息确认
介绍公司情况
聊实习
找工作考虑的因素
后续流程

2.

作者:卷心菜选手
链接:https://www.nowcoder.com/discuss/701016?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

8.8 虾皮一面

排序算法时间和空间复杂度,讲到归并排序空间复杂度可以为O(1),怎么实现?

mysql索引

为啥需要消息队列,三大功能?

异步化,缓冲峰值,服务解耦

redis数据结构,使用场景

项目涉及到的设计模式?

算法题

1元、2元纸币,组成n元有多少种组合方式?—>n/2+1

img

希望能过把嘿嘿,冲冲冲

8.14 虾皮二面

项目介绍,难点,解决

分布式锁实现?优缺点?(讲到redission的时候问了juc)

分布式事务

mysql优化

计算机网络四次挥手,为啥是四次

算法:数据流中位数,最大正方形,单词接龙,是否为平衡二叉树

3

作者:MyforeverG
链接:https://www.nowcoder.com/discuss/836629?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

1.自我介绍
2.UI自动化项目介绍,流程
3.进程和线程协程含义区别
4.长连接和短连接区别
5.cookie有哪些属性
6.sql中 索引的优缺点
7.怎么判断你写的sql语句是好是坏
8.linux中 如果一个文件没有权限 怎么加权限 777 表示啥意思
9.手撕代码 两个数组中 找出相同的 不能用python自带的方法
10.发朋友圈上传图片的用例设计
11.sql中慢查询是什么意思
12.pb协议含义
13.http协议的版本

14.进程和进程之间是怎么进行通信的

4

作者:AutoX首席内推官-WX:18813292768
链接:https://www.nowcoder.com/discuss/630434?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

虾皮面经

一面

1、自我介绍

2、UI自动化测试项目的结构是怎么样的

3、使用效果如何

4、觉得编写的UI自动化测试框架有什么地方可以改进

5、接口怎么去测试

6、谈谈映像深刻的缺陷,原因,以及开发如何修复的

7、访问一个网页的整体过程是怎样的

8、TCP和UDP的区别

9、Session,cookie,token的区别

10、用例设计题:虾皮app的首页右下角悬浮了一个游戏的入口,针对这个游戏(是一张图片)设计测试用例

11、算法题:有效的括号字符串~牛客原题

12、数据库题,不记得了

13、Linux题:查日志文件内某个网页出现的次数

二面

1、自我介绍

2、最近做的一个项目的系统架构,用到微服务

3、微服务之间如何通讯,通过什么协议

4、Tcp/Ip的7层模型

5、什么是全双工的工作模式

6、socket和websocket的区别

7、接口自动化框架是怎么实现的

8、接口测试需要注意哪些

9、用例设计题:实现一个系统,客户输入生日和邮箱,然后在生日的前一天给用户邮件提醒,如何从开发角度实现该功能,然后针对你的开发思路,如何设计测试用例

10、算法题:一个有序数组和目标值,求目标值第一次出现的位置,如[1,2,2,6],目标值2,输出1

5

作者:zeroplus
链接:https://www.nowcoder.com/discuss/682343?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

1.自我介绍
2.比较细致地问了两个项目
3.四次挥手的过程; TCP与udp的区别
4.性能测试的指标
5.测试工具或者框架了解吗
6.linux系统的性能指标有哪些
7.进程与线程的区别;进程(还是线程来着)怎么切换?
8.数据库分页查询怎么优化?
\9. Python的垃圾回收机制;深拷贝浅拷贝的区别; .pyc文件是起什么作用的?
10.数组与链表的区别;红黑树了解过吗?
11.编程题:输入一串字符串,输出一个整数。(写一个atoi()函数并测试输入输出。)
12.反问环节
全程一个小时左右,感觉面试官比较耐心友好。

6

作者:牛客31550753号
链接:https://www.nowcoder.com/discuss/710149?type=post&order=recall&pos=&page=0&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

一面:一个小时

1.自我介绍
2.问了一点关于实习的项目
3.十分钟手撕代码:找出给定字符串中所有长度大于等于3的回文。
4.问了计算机网络相关的,说一下网络层都有哪些协议,那说一下ARP协议的流程,它是干什么的

在同一网段

​ 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

不同网段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vZJYAflU-1649732108520)(098bc619ef9e72f588dd727b36f4031.png)]

​ 判断是不是在同一网域,如果不在,就发给默认网关,知道默认网关的IP地址,就在网段里发送ARP请求。请求网关的MAC地址,然后发送给默认网关。因为目的IP地址跟自己的IP地址不一样,则会查询路由表中相同网段的吓一跳地址IP,以及对应自己的MAC地址,然后发送给吓一跳的,直至和路由器自己在同一网络,然后查ARP表,如果没有就发送ARP请求到该网域。

1、主机A有数据发往主机B,数据封装IP之后发现没有主机B的mac地址;然后查询ARP,ARP回应:“我在192.168.3.0/24网段,目标地址在192.168.4.0/24,不属于同一网段,需要使用默认网关”;ARP发现默认网关是192.168.3.2,但是没有网关mac地址,需要先进行查询;



2、主机将数据包先放到缓存中,然后发送ARP查询报文:封装自己的mac地址为源mac,目标mac地址写全F的广播地址,请求网关192.168.3.2的mac地址。然后以广播方式发送出去;


3、路由器收到广播数据包,首先将原192.168.3.1添加到自己的mac地址表中,对应mac地址为0800.0222.2222。路由发现是请求自己的mac地址,然后路由回复一个ARP应答:封装自己的IP地址为源IP自己的mac地址为源mac,主机A的IP为目的IP主机A的mac为目的mac,发送一个单播应答“我是192.168.3.2.我的mac地址为0800.0333.2222”;


4、主机收到应答后,将网关mac地址对应192.168.4.2(跨网关通信,其他网段IP地址的mac地址均为网关mac),然后将缓存中的数据包,封装网关mac地址进行发送;


5、路由收到数据包,检查目的IP地址,发现不是给自己的,决定要进行路由,然后查询路由表,找到对应相应网络号的吓一跳IP地址,需要发往192.168.4.0网段中的192.168.4.2地址。路由准备从相应接口上发出去,然后查询mac地址表,发现没有主机B的映射。路由器发送arp请求查询主机B的mac地址(原理同2、3步,主机B收到请求后首先会添加网关的mac地址,然后单播回复arp请求);


6、路由器收到主机B的mac地址后,将其添加到路由mac地址表中,然后将缓存中的数据2层帧头去掉,封装自己的mac地址为源mac,主机B的mac地址为目的mac(源和目的IP地址不变),加上二层帧头及校验,发送给主机B;


7、主机B收到数据之后,进行处理,发送过程结束;

8、如果主机B收到数据后进行回复,主机B会进行地址判断,不在同一网段,然后决定将数据发送给网关,主机B查询mac地址表获得网关mac地址,将数据封装后发送(arp地址解析的过程不再需要了,mac地址表条目有一定的有效时间),网关收到数据后直接查询mac表,将二层帧mac地址更改为A的mac发送出去。如此,主机A收到主机B的回复;

5.说一下传输层的协议,tcp和udp协议的区别
6.二叉树的节点的前序遍历序列为{A B H F D E C K G},中序遍历序列{H B D F A E K C G},则后序遍历序列是什么
7.说一下栈和队列,说一下他们的删除元素操作
8.说一下快排思想,还有他的时间复杂度
9.说一下导致死锁的条件
10.进程间通信方式都有哪些
11.说下进程和线程的区别
12.说下数据库索引,索引查询和没有索引查询有什么区别,分别是怎么查的

(28条消息) 假设没有任何索引,数据库是如何根据查询语句搜索数据的?_佟印龙的博客-CSDN博客_数据库没有索引怎么查询

​ 首先数据页之间是双向链表。数据页内部是单向链表,按主键从小到大排序。每个数据页都有一个页目录,根据数据行的主键存放一个目录,同时数据行是被分散存储到不同的槽位里去的。

没有索引

​ 把第一个数据页从磁盘上读取到内存buffer pool的缓存页里来

​ 首先就会先到数据页的页目录里根据主键进行二分查找(;然后通过二分查找在目录里迅速定位到主键对应的数据是在哪个槽位里,然后到那个槽位里去,遍历槽位里每一行数据,就能快速找到那个主键对应的数据了。每个槽位里都有一组数据行,就在里面遍历查找就可以了。

​ 根据非主键的其他字段查找数据,此时是没办法使用主键的那种页目录来二分查找的,只能进入到数据页里,根据单向链表依次遍历查找数据了,这就性能很差了。

13.登录的测试用例,从哪些方面考虑,最后给了一个输入区间范围8-16,只允许字母和数字,然后写测试用例
账号
1)8-16位
2)只支持数字和英文字母
14.说下长连接和短连接,还有他们分别的应用场景

定义:

短连接:例如普通的web请求,在三次握手之后建立连接,发送数据包并得到服务器返回的结果之后,通过客户端和服务端的四次握手进行关闭断开。

长连接:区别于短连接,由于三次握手链接及四次握手断开,在请求频繁的情况下,链接请求和断开请求的开销较大,影响效率。采用长连接方式,执行三次握手链接后,不断开链接,保持客户端和服务端通信,直到服务器超时自动断开链接,或者客户端主动断开链接。

适用场景:

短连接:适用于网页浏览等数据刷新频度较低的场景。

长连接:适用于客户端和服务端通信频繁的场景,例如聊天室,实时游戏等。
————————————————
版权声明:本文为CSDN博主「木鱼僧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fastjack/article/details/79523679

15.既然你说到了http header,那还有哪些http header
16.get和post的区别
17.反问,问了下对于这个岗位我还需要学习哪些方面的知识

二面:一个小时
1.自我介绍
2.说一下项目,有什么难点,项目架构
\3. 算法:有10万个数据,选出前100个最大的数据,请写出代码并讲一下思路,说明时间复杂度和空间复杂度
\4. 测试用例编写:电商平台
5.对测试,开发,测试开发的认识,以及为什么要做测试岗(它校招只有测试岗)
\6. 有9个球和一个天平,有一球稍轻,用这天平最多几次可以找出
\7. SQL:界面展示的数据来自表SP,每页展示10条数据,请写一条sql,查询出第3页的数据
\8. 用过什么测试工具,说一下selenium原理
9.平时有什么爱好,还说了喜欢唱歌但五音不全,还把面试官逗笑了
10.老家哪的,为什么想来深圳
11.反问,公司偏测试还是偏开发?学习建议?

7

作者:邢克垒
链接:https://www.nowcoder.com/discuss/766782?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

一面(忘记录音了,大概内容,15min八股+20几分钟写题)

\1. mysql 隔离级别,脏读,幻读,聚簇索引,死锁

\2. 死锁条件,如何破坏

\3. TCP握手

\4. AOP

\5. Python的decorator

…其他不太记得了,但基本都是八股

题:共享屏幕写LRU缓存

感受:这个面试小哥超好,面试过程很轻松和谐,加上很简单,面完我就觉得自己要挂了,因为没有区分度。没几天就通知二面了

结束前小哥还说了一句:我们公司不加班

二面(一共1h(40+30)左右)

\1. 自我介绍

\2. 聊实习经历,做了啥,收获,成果(实际产出),总结自己的亮点

\3. 学校项目介绍。面试官提示:先介绍项目做什么,我负责的内容,如何分工,难点,如何解决,做了哪些优化。

\4. 学校项目我做的和存数据有点关系,所以问了b+树原理

\5. 分布式和云计算的一些理解。和单体应用的差别

\6. 自己的优势(我说了自己学习能力,他问最近了解的新技术)

\7. 由新技术问了redis,高性能的原理,为什么用单线程,多线程怎么做的,字典是怎么实现的(不知道,应该是哈希吧),哈希扩容过程

题(30min):排序题,挺简单的,我用归并排序写的,写了一些错误没跑过,后面他说可以用冒泡…我说那复杂度有点高,他说不出错也挺重要的。

反问后他主动介绍了一下虾皮

感受:没有八股,纯顺着你的简历深挖。我本身没啥内容,所以面完也觉得挂了。结果第二天内推人告诉我过了。。答得不能说很好,但是也没有太大问题,如果要我自己总结可能通过的点,就是诚实和确实在基础方面有花些时间。

8

作者:太过年轻的小骗子
链接:https://www.nowcoder.com/discuss/723880?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

json 其它协议了解吗 json的优缺点

linux常用命令

进程间通信方式

你对操作系统的理解
cpu占用率过高的时候怎么排查
IO频繁的情况怎么解决(记不太清了…

​ 如果磁盘IO确实比较大的话,是数据库,可以进行读写分离或者分库操作,减小磁盘压力,文件的话,可以利用raid来减轻压力

​ raid什么是磁盘阵列?15种RAID优缺点详解 (RAID5 RAID6 RAID10 RAIDZ SHR UNRAID)_哔哩哔哩_bilibili

​ raid并发读取多个硬盘。

​ RAID 0即Data Stripping(数据分条技术)。整个逻辑盘的数据是被分条(stripped)分布在多个物理磁盘上,可以并行读/写,提供最快的速度,但没有冗余能力。要求至少两个磁盘。我们通过RAID 0可以获得更大的单个逻辑盘的容量,且通过对多个磁盘的同时读取获得更高的存取速度。RAID 0首先考虑的是磁盘的速度和容量,忽略了安全,只要其中一个磁盘出了问题,那么整个阵列的数据都会不保了。

​ RAID 1,又称镜像方式,也就是数据的冗余。在整个镜像过程中,只有一半的磁盘容量是有效的(另一半磁盘容量用来存放同样的数据)。同RAID 0相比,RAID 1首先考虑的是安全性,容量减半、速度不变。

​ RAID 5的工作方式是将各个磁盘生成的数据校验切成块,分别存放到组成阵列的各个磁盘中去,这样就缓解了校验数据存放时所产生的瓶颈问题,但是分割数据及控制存放都要付出速度上的代价。

HTTP1.1和2.0的区别

HTTP常用状态码

HTTPS建立连接的过程

数据库唯一索引和主键索引的区别

主键索引和唯一索引哪个查询速度快

数据库索引一般用什么类型的键值
B+树索引和B树的区别(为什么不用B树
堆和栈的区别
堆和栈哪个访问更快
常见的排序算法及其效率

9

作者:大牙湾
链接:https://www.nowcoder.com/discuss/707612?type=post&order=recall&pos=&page=0&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

1.为什么程序总是从main函数开始执行的
2.线程和协程的区别
3.select和epoll的区别
4.栈是线程独有的还是共享的资源
5.进程间通信的几种方式,分别介绍一下
6.stl有哪几种容器,挑两个介绍一下
7.操作系统堆和栈
8.内存泄漏问题遇到过吗,怎么解决
9.tcp连接如果客户端掉线了连接会断开吗
10.不同的进程可以监听同一个端口吗?(tcp有血缘关系的进程可以,udp呢,网卡呢?)

​ 根据Unix网络编程中的知识可知,服务端监听一个端口会经历:

一、根据套接字类型(Ipv4,Ipv6等)建立套接字socket

二、将套接字bind绑定到具体的网络地址和端口号

三、调用listen开始在这个套接字上进行监听。

Unix提供了一个接口setsockopt()能够在bind以前设置套接字选项,其中就包括REUSEADDR这个选项,代表能够多个进程复用bind函数中指定的地址和端口号。

由此可知多个应用(进程),包括同一个应用屡次,都是能够绑定到同一个端口进行监听的。对应地C++、NET等高级语言也都提供了对应的接口。

11.tcp连接服务端状态
12.mysql有哪些索引,介绍一下
13.mysql有哪些锁,索引优化相关
14.熟悉那些数据结构(想问红黑树,我就不提)
15.unix系统性能包括哪些方面,怎么查看cpu占用率,内存使用情况,网络,IO情况,端口占用。
16.手撕代码:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/

10

作者:执念-`
链接:https://www.nowcoder.com/discuss/690261?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

一面是个年轻小伙,主要考察基础知识

自我介绍

聊下项目,以及为并发做了操作?

为提高并发如何优化数据库?

mysql隔离级别以及解决的问题?

乐观锁悲观锁了解吗?

有很多商品购买请求,保证数量不出错且支持更多请求,如何设计数据库?

行所的锁表情况是怎么发生的,如何解决?

	1  查询时  mysql的innodb 支持for update 行级锁

select * from test where name=‘行锁’ for update;

如果 name没有加索引则会造成锁表,直到事务执行完毕后

如果有索引的话就只会锁行

如果搜索条件增加了索引但是没有搜索到数据不会造成锁表

​ 2. Update时,where中的过滤条件列,如果用索引,锁行,无法用索引,锁表。按照索引规则,如果能使用索引,锁行,不能使用索引,锁表

有上万商品,要提取销量最好的一百份,怎么设计数据结构?

哈希表的机制与复杂度。产生大量冲突后如何解决的?

输入网址到获得响应,需要走哪些协议?

为什么DNS要基于UDP协议?

介绍下虚拟内存的机制

野指针是如何产生的,以及如何解决

手撕代码:单链表排序

11

作者:曹正盛
链接:https://www.nowcoder.com/discuss/754867?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

9.12 虾皮一面

  • 详细了解项目,主要有一个问题,问到 RocketMQ 保证有序性,如何保证的?
  • 问数据库,MySQL 对于B+树你有了解嘛,介绍一下它是什么样的
    • B+ 树是如何减少 IO次数的
  • 网络,为什么需要三次握手,老问题了,但是我就记得我自己的总结其他都忘了,不过面试官好像感觉还行
    • 问一个场景,如果是在服务端检测到有大量的 time-wait,是什么原因呢?
      • 当大量的连接处于 time-wait状态时,由于本地端口数是有限的(65535),可能会导致新建立的TCP连接出错
      • 可以使用netstat -n |awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'进行查看
      • 我回答了可能是网络问题,导致客户端不断重发,保持连接,好像答错了,没注意到他说的是大量的
      • 原因:可能是由于大量的短连接存在,特别是 HTTP请求中,如果connection头部取值被设置为 close时,基本都由服务端发起主动关闭连接,而 TCP四次挥手关闭连接机制,为了保证 ACK重发和丢弃延迟数据,设置 TimeWait为 2MSL,也即4分钟
      • 解决办法:1. 客户端 HTTP请求头部Connection设置为keep-alive, 保证存活一段时间;2. 服务端允许 time_wait状态的socket被重用,缩减 time_wait时间,设置为1MSL,另外一般设置服务器不允许主动关闭连接
    • 半开连接
    • 在未告知另一端的情况下,通信的一段关闭或终止了连接,那么就认为该条TCP连接处于 半开状态
    • 这种情况一般发生在通信一方的 主机崩溃 或者 断电 的情况下(非正常关机)
    • 只要不尝试通过半开连接传输数据,正常工作的一端不会察觉出另一端已经崩溃!! 直到开始传输数据,会收到对端的 RST 报文
    • 如果服务器上有很多半开连接,会占用很多不必要的资源,可以通过设置 keepalive 选项来进行检测和关闭
  • 刷题:BST 删除一个元素,保持结构 https://leetcode-cn.com/problems/delete-node-in-a-bst/,说好的回溯呢~结果是递归

9.18 虾皮二面

  • 个人介绍
  • 详细问个人项目
    • 软负载均衡
      • 负载均衡常用算***询,加权,随机,最小响应时间,最小并发数策略,IP绑定 ip_hash,fair,一致性Hash
      • 服务端负载均衡,可以使用硬件来做,或者软件——Ngnix
        • Ngnix 的原理,Ngnix 的负载均衡是在IP层
      • 客户端负载均衡,Spring Cloud中可以使用Ribbon 完成
    • 常用的服务发现:Consul, Zookeeper, Etcd, Eureka,主要有两类
      • 分布式 CAP理论,一般只能保证 CP或者 AP
      • \1. 注重高可用
      • \2. 注重一致性——比如ZK
        • ZK是如何保证的一致性,ZAB一致性协议——消息广播阶段+ 崩溃恢复阶段(开始选举+选举完成数据同步),ZAB协议中的Zxid
        • 在项目中你是如何使用ZK:利用心跳机制+临时顺序子节点 —— 维持动态上下线,Client 使用事件监控机制(Watcher-CuratorUtils API)感知服务的变化
        • 场景:
          • \1. 对Server进行了扩容,Client是如何感知到的
            • 事件监控机制
          • \2. Server 中有少量出现问题,而Client与ZK网络连接也出现问题,在这种情况下Client并不能感知到Server的上下线
            • Server - Client 使用心跳机制维持长连接,复用连接
            • 如果当前的连接发送不成功,会去继续尝试下一个连接
          • \3. 但是这样子会出现一个问题,它必须尝试所有的可能才能找到一个正常的连接,有什么办法可以避免嘛?
            • Client端维护连接列表的状态,更新状态,软负载时可以挑选健康的连接
          • \4. 如果我们在Client维护了与Server连接的状态,但是这个时候Server又恢复正常了,Client 与注册中心还是中断的,如何感知
            • 利用后台线程,对目前已有的连接但是不正常的状态尝试间隔一定时间发送报文,如果成功则修改状态,否则尝试一定次数之后就将连接删除
    • 有了解过断路器嘛 —— Hystrix
    • 在分布式架构中为什么需要消息队列
      • 解耦
      • 削峰平谷
      • 利用重试机制,保证任务执行成功
      • 利用消息队列可以做重试,但是如何保证如何不重复消费消息
        • 给消息一个状态,消费成功返回ACK给消息队列。反问,如果消息队列没接收到
        • 维护消息的状态,落库,每次先去DB中查询状态
      • 全局唯一Id生成器
        • MySQL 利用自增主键
        • 单台不够,部署多台,每台从不同的起始点出发,步长相同,保证多台可以同时发号
        • 虽然可以使用连接池的方式,但是每次就取一个号还是比较浪费的,可以每次批量去取(实际上,MySQL只需要保存当前最大号码数)
        • Redis incr, incrby
        • UUID 有点小问题
        • 雪花算法:64位:41(时间戳)+ 10 (计算机ID)+ 12(每台机器毫秒内可以生成的ID序列号)
  • 算法题
    • 顺时针打印矩阵
    • 计算逆序数

12

作者:牛客899173605号
链接:https://www.nowcoder.com/discuss/684696?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

进程 线程的区别
协程?
Linux 用过哪些命令
查看日志 tail怎么用
计算机网络层次 各层协议
ping用的什么协议 ICMP
http状态码 怎么分类的
1开头的状态吗
三次握手 为什么不是两次
time-wait
MSL是什么
短连接和长连接,短链接存在的问题?
最左前缀匹配
联合索引和唯一索引 走哪个索引
事务隔离级别
索引底层
redis 有哪几种数据类型
RDB AOF 默认用哪种?
怎么做分布式锁?
setnx
算法 链表有没有环

快排 时间复杂度

青蛙跳

前k个最大的数

12

作者:sigmod
链接:https://www.nowcoder.com/discuss/842391?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

一面(50min) 7.10

自我介绍,没有问实习和项目

Java八股:

equals和==区别?为什么重写equals要重写hashcode?

java集合有哪些?

ArrayList和LinkedList的区别?

ArrayList默认大小,扩容机制?扩容的时候如何将旧数组转化为新数组?

HashMap默认大小,扩容机制?

追问:HashMap在哪个jdk版本使用红黑树,之前的实现方法是什么?

线程的创建方式?

多线程了解吗?(当时脑子一抽,我以为要写多线程代码,回答了不熟悉,他就没多问了)

说说 MySQL 的索引?b树与b+树的区别?

Redis知道吗?(回答只了解一些基础的)

Redis的数据结构?

简单介绍一下Spark?(说了RDD、Spark框架、Spark on Yarn等)

RDD为什么弹性?

Spark Stage划分

Spark的cache、persist和checkpoint

追问:cache和persist是action算子吗?会懒执行嘛?

Spark处理数据倾斜的方法?

Linux查看内存、CPU等状态?查看进程的内存消耗和CPU消耗?

clickhouse了解吗?

剑指 Offer 09. 用两个栈实现队列

反问

二面(1h15min)7.17

自我介绍

实习工作、难点在哪

简历上的几个项目是如何做的,项目部署在哪里,linux环境吗?

clickhouse知道吗,其他的OLAP引擎呢?实习中用到的doris?

jvm内存中,堆和栈的区别?

java GC算法,标记-清楚、标记-复制、标记-整理

Objects类中有哪些方法?

equals()和hashcode()了解吗?

其中hashCode方法的返回值是什么?

重写hashCode或equals方法需要注意什么?

如何创建一个线程?

剑指 Offer 27. 二叉树的镜像

sql:求平均成绩大于80,且0001课程分数高于0002课程分数的学生id

场景题:内存只有256M,有两个10G的文件,从这两个文件中找出相同的数字?(用MapReduce实现,只说思路)

场景题:要求说出使用的计算框架和存储框架

(1)实时计算每天各个种类的热门Top10商品

(2)实时计算每天一小时内各个种类的热门Top10商品

反问

12

作者:QAQorz
链接:https://www.nowcoder.com/discuss/831715?type=post&order=recall&pos=&page=1&ncTraceId=&channel=-1&source_id=search_post_nctrack&gio_id=7AC5DAE36641CD18A8E434C50C98B300-1646232422212
来源:牛客网

自我介绍

讲一个工作的项目

讲自己的项目(PingCAP Talent Plan TinyKV)

单机存储是什么(badger)

基于什么数据结构的(LSM)

相比最原始的LevelDB做了什么优化(wisckey论文,key-value拆分)

为什么value可以无序(SSD特性)

为什么SSD随机读写比磁盘快

讲讲LSM的写入,会碰到哪些组件(就是讲MemTable,SSTable结构,compact之类的)

了解Level0的SST有什么特别的吗(level0不compact,当时没答出来并且不理解)

Raft的读流程,怎么确定哪个成员可读(每次向leader询问/租约)

2PC的缺点,说一个解决办法(协调者单点,阻塞,一致性)

还知道别的分布式事务吗(没研究过。。

知道什么Linux性能分析相关的命令(说了个top

top那几个指标什么意思(果然。。一个都不记得,然后面试官一个个给我讲解

硬中断和软中断有什么区别(答得不好

为啥刚毕业半年看机会

写题,n*n的01矩阵,选连续r行,连续c列覆盖这些点,求min(r+c)

反问

评价一下Shopee的基建、技术发展

为什么做专用的存储,特征存储和通用存储的区别

是在推荐部门下吗

二面

问项目

so怎么运行的(妈的不知道啊)

跟C++的动态库有什么区别(C++动态库我也不知道啊)

如果一个动态库特别大要怎么执行起来(啥啊不知道啊)

知道mmap吗(好吧。。。)

怎么直接在Go里面调用C++代码(我说CGO)

你对CGO知道多少(知道个名字)

协程主要在网络连接的哪个阶段发挥优势(没答好)

你现在知道为啥Level0不compact了吗(梦 幻 联 动)

写题,有一个很大的csv文件,格式是\n\n

key是递增的int,给一行文本找到插入的位置

没get到面试官想问的文件操作的点在哪,面试官就说算了,当做内存中的string处理,写个魔改二分

反问

13

  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值