二叉树遍历&&CRC码&&MySQL语句执行顺序&&左右符号匹配算法

哔哩哔哩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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值