当前位置: 首页 > 后端技术 > Java

从阿里到字节,字节八月最新面谈及答案解析

时间:2023-04-01 22:30:53 Java

序金九银十月临近,想涨薪的可以看看这波~最近看了阿里频频上热搜。我还是不认同一些文化,所以最后去了字节跳动,Java研发部,现在已经拿到offer了。在我有时间来这里之前,我会告诉你一些我遇到的面试问题和答案,如果觉得回答的不好,可以留言告诉我。文末还为大家整理了一些Java学习资料,记得领取哦!极网1.HTTP底层使用什么协议?HTTP只定义了应用层的东西。下层的可靠性必须由传输层来保证。可以使用TCP,但并不是说一定要使用TCP。只要能保证可靠性,传输层协议可以承载http,也可以基于sctpHTTP实现。当然HTTP也不是不能通过udp来承载,只是不规范而已。2、TCP如何保证可靠性?TCP主要提供校验和、超时重传、序列号/确认响应、最大报文长度、滑动窗口控制等方法来实现可靠传输校验和。接收端通过checksum的方式检测数据是否有错误和异常,如果有错误则直接丢弃该TCP报文段并重新发送。(一共计算了三部分:pseudo-header,TCPheader,TCPdata)Sequencenumber/confirmresponse响应机制,发送方发送信息给接收方,接收方会回应一个数据包,这个数据包就是响应数据包。发送方发送一个数据包,如果收到的数据包没有响应一个确认数据包(ACK数据包),就会重发。或者接收端的响应包,如果发送端没有收到,就会重新发送数据。这确保了数据的完整性。超时重传是指发送数据包到接收数据包之间的时间。如果超过这个时间,则认为包丢失,需要重传。如果一个数据包经过多次重传仍未收到相应的确认数据包,则认为接收端异常,将强行关闭连接。并通知应用程序异常强制终止通信。最大报文长度在建立TCP连接时,双方约定一个最大长度(MSS)作为发送单位,重传时也用于重传。理想情况下,这种数据长度不会被网络层阻塞。滑动窗口控制超时重传机制存在效率低下的问题。窗口的大小是发送方在不等待确认包的情况下可以发送的最大数据量。拥塞控制:窗口控制可能会导致网络拥塞问题。为此,TCP引入了慢启动机制,发送少量数据先探路。这里引入拥塞窗口:一开始定义拥塞窗口的大小为1;每收到一个ACK响应,拥塞窗口就加1。(复习四种拥塞控制算法)3、get和post有什么区别?get和post的区别可以从以下六个方面看出:get用于请求;post一般用于表单提交。安全性不同:get是明文传输,不安全,请求信息直接跟在url后面;post是安全的,请求体中的信息数据长度限制:get对传输的数据长度有限制;post没有限制,因为请求信息放在消息体中是否自动缓存:get请求会被浏览器自动缓存;post需要手动设置缓存重复操作:获取重复请求/回滚无害;postrollback后需要重新提交表单TCP数据报:get发送过程中生成一个TCP数据报(浏览器会一起发送http头+数据,服务器响应200,返回请求的数据);post会发送两个TCP数据报(浏览器先发送header,等待服务器响应100continue,发送表单后,服务器响应200ok)4、Cookie和Session的区别?Cookies通过在客户端记录信息来确定用户身份;Session通过记录服务器端MySQL5.5的信息来判断用户身份。您的MySQL数据库使用哪个引擎?InnoDB6。为什么要使用InnoDB?因为支持事务7.项目中哪些地方用到了事务,需要支持事务?Java8.HashMap解决哈希冲突?数组+链表9.是如何优化的?当链表容量达到8(默认)时,首先检查数组的容量是否达到64,如果小于64,先扩充数组的容量,而不是转成红黑树。到64的时候,会转化为红黑树10,那么红黑树会不会变成一棵很大的树呢?11.并发有哪些问题?如何解决这些问题?12、锁具有哪些,它们有什么区别?13、操作系统的内存更换策略是什么?虚拟内存的一个很重要的概念就是页面置换算法。最佳页面替换算法:不再使用的页面先进先出页面替换算法:淘汰在内存中驻留时间最长的页面最近未使用的页面替换算法:最近一段时间未被使用的页面被淘汰leastusedPageReplacementAlgorithm:Theleastusedpage14.什么是平衡二叉树?二叉树A.n=n0+n1+n2b。n=n1+2n2+1(n=分支数+1,分支数=n1+2n2)c.n0=n2+1(由上面两个公式)fullbinarytree:一棵深度为k的二叉树和2k-1个节点。完全二叉树:深度为k,有n个节点,当且仅当每个节点对应一棵深度为k的满二叉树,则为完全二叉树。A。其特点:i.叶子节点只能出现在最大的两个层次上;二.对于任意一个节点,其右子树下的后代的最大层级为l,其左子树下的后代的最大层级为l或l+1。b.n个节点的完全二叉树的深度:k=?log2n?+1二叉搜索树/二叉排序树:左子树上节点的值(如果不为空)小于根节点的值;右子树上节点的值(如果不为空)大于根节点的值。平衡二叉树(AVLTree):一种特殊的二叉排序树,希望二叉排序树的高度越小越好。A。平衡二叉树是一种二叉排序树,具有以下特点:i.左右子树深度差的绝对值不超过1;二.它的左右子树也是平衡二叉树。注:平衡二叉树的平衡调整方法15.稳定的O(nlogn)排序算法?216.什么是稳定性?17.算法:剑指OfferII046.二叉树右侧视图https://leetcode-cn.com/probl...classSolution{publicListrightSideView(TreeNoderoot){//面试中,本来打算用两个A参数递归,结果发现做不到//早上刚复习了BFS,没想到会用,还是题目太少List<整数>result=newLinkedList<>();if(root==null)返回结果;队列q=newLinkedList<>();q.offer(根);while(!q.isEmpty()){intsz=q.size();for(inti=0;i