哔哩哔哩2021校园招聘后端开发
1.物理层主要设备:中继器、集线器;
数据链路层主要设备:二层交换机、网桥;
网络层主要设备:路由器。
网络层以上:网关
2.树前序中序后序
对某二叉树进行先序遍历的结果为ABDEFC,中序遍历的结果为DBEFAC,则后序遍历的结果是DFEBCA
图片来自湮灭丶星空
扩展:
(1)什么是深度优先周游,广度优先周游
二叉树的深度优先周游有三种方式:
①先根次序遍历(简称先序遍历):
访问顺序:先根节点,再左子树,最后右子树
②中根次序遍历(中序遍历):
访问顺序:先左子树,再根节点,最后右子树
③后跟次序遍历(后序遍历):
访问顺序:先左子树,再右子树,最后根节点
这三种遍历递归实现简单
广度优先周游(又称层次遍历)
从root所在的层一层一层的往下遍历,使用队列实现
(2)代码实现:
https://www.cnblogs.com/zhi-leaf/p/10813048.html
(3)根据两种遍历方式构建二叉树
①根据树前序遍历和中序遍历构建二叉树
思路:根据前序遍历顺序第一个节点为根节点记作root
中序遍历以root为分界线,左边为左子树,右边为右子树
举例:已知一个二叉树前序遍历为:ABDEGCFH,中序遍历为:DBGEACHF,构建二叉树如下
图解:
②根据树后序遍历和中序遍历构建二叉树
根据后序遍历最后一个节点为根节点+中序遍历能根据节点划分左子树右子树
③根据树前序遍历和后序遍历不能构建唯一的二叉树
没有中序遍历划分左右子树,只知道根节点无法构建唯一二叉树
引用自https://www.cnblogs.com/jiaxin359/p/9512348.html
3.给定一个只包含括号的字符串,判断字符串是否有效。其中,括号种类包含: ‘(’,’)’,’{’,’}’,’[’,’]’。有效字符串需满足:1) 左括号必须用相同类型的右括号闭合;2)左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串
解析:本题考的是栈,对于这类左括号对应右括号类问题往栈方面想
可分为两种情况 ①({}[]) ②([{}])
总结规律:右边符 左边肯定是左边符号
右边 |
|
左边 v--------栈顶
//遇到左括号之类的入栈,遇到右符号将相邻的左符号(即栈顶)出栈
public static boolean IsValidExp (String s) {
// write code here
if( s.isEmpty())return true;
if(s.length()%2!=0) return false;
Stack<Character> astack=new Stack<>();
for(int i=0;i<s.length();i++)
{
char sa=s.charAt(i);
if(sa=='{')
astack.push('}');
else if(sa=='(')
astack.push(')');
else if(sa=='[')
astack.push(']');
else {
//Character c=astack.peek();不能写成这样,pop():取得栈顶值并将栈顶元素出栈 peek:单纯只是获得栈顶值而已
Character c=astack.pop();
if(sa!=c)return false;
}
}//end for
return true;
}
4.CSRF
定义:攻击者盗用了你的身份,以你的名义发送恶意请求
防范措施:
①过滤request请求的Header信息,过滤传过来的refer字段,判断此次请求中的域名地址是否和当前服务的域名一致。
②利用nginx配置控制可以请求过来的的域名及请求方式。
https://blog.csdn.net/ZiChenGroupOf/article/details/90749679
5.一些专业名词缩写
RAFT:Paxos和Raft都是为了实现Consensus一致性这个目标,这个过程如同选举一样,参选者需要说服大多数选民(服务器)投票给他,一旦选定后就跟随其操作。
SCSI:一般指小型计算机系统接口
6.sizeof&&malloc
在64位的机器上,如下所示的c代码中, sizeof(a) 和sizeof(b)大小分别是多少
char a[10];
char b = (char)malloc(10 * sizeof(char));
结果为:10,8
为什么sizeof(b)结果为8??
解析:64位系统下,指针长度为8,sizeof(b)指的是对指针sizeof,而不是后面那一大串内容
7.Docker底层采用的linux隔离技术为cgroup
8.数据结构中,在逻辑上可以把数据结构分成线性结构和非线性结构
9.处理信号通过介质的传输:物理层
保证数据的正确顺序、无错和完整:数据链路层
10.CRC码计算
已知生成多项为;G(X)=X^4+X+1.则信息为1101011111的CRC码为10
表达式:CRC码=1101011111*N/G(X),N=G(x)位数-1
解析:①G(X)=X^4+X+1.,其对应的二进制为10011
②因为10011有5为,所以给1101011111后增加4个0
注:G(X)有n位,则1101011111后添加n-1个0
③11010111110000/10011=1100001110…10,
故CRC码为10
图解:
**[**说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。
11.TCP套接字函数中不会产生阻塞的是bind
12现有1G数据需要排序,计算资源只有1G内存可用,下列排序方法中最可能出现性能问题的是归并排序
解析:归并排序需要使用一个临时数组,空间复杂度较大
14.SQL语句执行顺序:
MySQL语句执行顺序
开始->from->where->group by->having
->order by->select
->limit->结束
举例
select * from City left join Area on City.AreaID = Area.ID where Area.ID>0 group by Area.ID having count(Region)>0 order by count(Region) desc limit 1;
语句执行顺序:先执行where再执行having再执行order by最后执行limit
参考自https://blog.csdn.net/u014044812/article/details/51004754
15.发送窗口&&接收窗口
客户端C和服务器S之间建立了一个TCP连接,TCP最大段长度为2KB,客户端C当前的拥塞窗口是16KB,向服务器S连续发送2个最大段之后,成功接收到服务器S发送的第一段确认段,确认段中通告的接收窗口大小是8KB,那么此时客户端C还可以向服务器S发送最大字节数是6KB
发送窗口=Math.min(接收窗口,拥塞窗口)=8kB
发送窗口(8)=已发送(2)+等待发送,
则等待发送:6KB