本人是大三的学生,所以仅供实习岗位的xd参考
(三面的面经有时间再更新)
周一下午拿到的offer,字节效率还是蛮高的,要内推的xd可以私聊我😄
一面
1. 浏览器输入URL之后的过程2. 域名投毒
3. 计算机网络的7层模型
4. 说一说有哪些应用层协议
5. Http状态码中的302和401是什么用的
6. 有没有做过web的身份验证
7. 脏读的场景和解决方案
8. 谈谈幻读
9. 幻读和脏读的区别
10. MySQL中 redo log 和 binary log 的区别和场景的使用意义
11. 为什么innoDB使用B+树
12. TopK问题 用那些方式实现,一步一步的优化
- 首先是完全排序 O(n*logn)
- 然后是冒泡或选择排序 O(K*n)
- 接着堆排序 O(n*logK)
- 使用二分的方式 ???
13. 算法题(给了我两道题,然后选一道来做)
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。14. 反问:我有哪些可以提高的地方?请问您是做什么相关事务的?
按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:
"123"
"132"
"213"
"231"
"312"
"321"
给定 n 和 k,返回第 k 个排列
比如n=3,k=4
输出231
=====================
判断是否是一个二叉搜索数
节点的左子树只包含小于当前节点的数
节点的右子树只包含大于当前节点的数
所有左子树和右子树自身必须也是二叉搜索树
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
输入:
2
/ \
1 3
输出:true
输入:
3
/ \
1 6
/ \
5 4
输出: false
解释: 输入为: [3,1,6,null,null,5,4]。
根节点的值为 6 ,但是其右子节点值为 4 。
二面
1. 介绍项目,结合项目问了 拉格朗日松弛算法,迪杰斯特拉算法2. 浏览器输入了https://www.toutiao.com 的整个过程
3. 证书在ssl过程中的作用
4. 三次握手的过程中有哪些攻击方式,举例子
5. 网络通道非常拥塞时,TCP如何保证数据可以正确到达对方
6. 拥塞控制详细过程讲一下
7. 四次挥手过程原因
8. 应用程序如何将数据从网卡上面读取到进程当中
9. 同步IO和异步IO
10. reactor模型
11. IO多路复用
12. Linux中有那些多路复用方式
13. 进程的几种状态,CPU如何在这几种状态中调度
14. 线程池的七大参数
15. 核心线程数 和 最大线程数的作用和使用过程中的变化
16. 讲一下volatile
17. 原子类的实现方式
18. 讲一下锁的AQS的实现方式
19. 讲一下知道的一些锁
20. 算法题(给了我两道题,然后选一道来做)
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL
输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL
=================
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <---
/ \
2 3 <---
\ \
5 4 <---
21. 反问:我有什么可以提高的地方嘛?
三面
-
策略模式
-
阻塞队列的Java API有那些
-
代理模式的API
-
AOP解决了什么问题
-
MySQL事务提交的过程
-
redo log 和 undo log 实现了什么功能
-
完全解释一下ACID的意思
-
举例说明不可重复读
-
设计题:一个应用程序会写两个数据库,保证这两个数据库的操作满足原子性(随时存在宕机的可能性)
-
设计题:线上有一个服务调用十分缓慢,要如何排查?
-
操作系统为什么要设置用户态和内核态
-
详细描述一次IO过程
-
讲一下DMA的作用
-
一面、二面、三面有那些你比较擅长但是没有问到的点
-
算法题:
滑动窗口的最大值限定语言:Javascript_V8、Python、C++、Javascript、Php、C#、Java给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。
反问:能不能评价一下今天的面试情况
(其实三面我一度以为自己挂掉了,两道设计题都答不上来,算法题只有一部分思路,并没有把他写完。但是没想到面试官最后还是说给我过了,希望我更多的去做一些项目,有更多的编码量。总之感谢面试官能够相信我吧!)
全部评论
(27) 回帖