百词斩Java实习面经
1.输入网址后都经历了什么。从所学的多方面说一下,操作系统,网络等
2.讲一下TCP三次握手
3.为什么三次不是两次
我答的可能和他想的不太一样,他觉得问题应该主要是防止已过期的请求突然又传送到服务器产生错误和资源浪费因为他后面又问我Q4应该是引导我往这个方面想
4.如果TCP前两次握手没问题,客户端这边为了和服务端连接又重新建立个请求会怎么样?(面试官说的其实没太听懂。。有没有大佬解答一下)
这里是引导我说TCP是三次握手不是两次的主要原因,如果是两次握手即可建立连接的话,想一个情景:第一次客户端发送请求报文服务端始终没有收到,客户端重发,经历两次握手,客户端与服务端都进入了连接状态收发完数据都关闭了连接,但由于网络拥塞,第一次客户端发送的请求报文这时候到了服务端,那么服务端就进入了连接状态,但是客户端是关闭状态,无法收到服务端的确认报文,也就无法建立连接,但是服务端始终处于连接状态就会导致资源浪费。
5.为什么是多线程而不是多进程
6.线程和进程区别
7.如何创建一个进程?
8.进程状态
9.算法,自己实现链表,然后通过链表实现栈
10.数据库索引底层是B+树,不是红黑树,Hash。
11.B+树索引的话,如果主键不是递增的,而且键值比较大,比如uuid,会有什么问题。(答的不好,欢迎大佬解惑)
如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置:此时 MySQL 不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,这增加了很多开销,同时频繁的移动、分页操作造成了大量的碎片,得到了不够紧凑的索引结构,后续不得不通过OPTIMIZE TABLE 来重建表并优化填充页面。
12.隔离性通过什么保证?
13.RR是通过什么实现的
14.间隙锁了解吗?
15.通过ssh命令登录到服务器 然后发现每次输入字符, 响应的延迟高
比较开放,我答了CPU占用和IO端口占用方面的。引导考虑网络的问题,看一下是客户端网络还是服务端网络的问题。我刚开始想的是ping一下服务器,但是后来一想这也是双端的,后来死活想不到。。面试官说先Ping一下别的服务器看是不是自己网络的问题。然后就可以确定了
16.考虑设计一个weibo,功能:注册, 登录, 发文字帖子 ,好友关注, 查看关注的所有好友的微博 。考虑提供服务,数据结构方面(从数据库方面随便说了说。。后面说了说关注功能Redis实现,热门用户博客需要经常访问,怎么设计)
#面经##面试题目##百词斩#