2021提前批-融360一面面经

    今天面试了融360,面试过程中主要问到Mysql、计算机网络、数据结构和算法。面试大约37分钟,整体表现给打70分,网络知识回答的有点差。下面进行学习总结,过程中如有错误,欢迎私聊我纠正。

第一轮面试题

TCP和UDP区别

TCP传输控制协议 UDP用户数据报协议
(1)TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接;
(2)TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,但不保证可靠交付;
(3)TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。 (报文解释 UDP报头和数据区两部分,报头由4个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度和校验值)
(4)每一条TCP链接只能是点对点的,UDP支持一对一,一对多,多对一和多对多的交互通信;
(5)TCP首部开销20字节,UDP首部开销小,只有8个字节;
(6)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

IP层详细介绍一下

规定网络地址的协议叫IP协议,定义的地址称之为IP地址。
子网掩码:将IP地址分为网络地址和主机地址。区分网络位和主机位是为了划分子网,把一个大网络分成多个小网络。

TCP四次挥手的过程,用到的数据报协议

之所以要断开连接是因为TCP/IP协议是要占用端口的,而计算机的端口是有限的,所以一次传输完成之后是要断开连接的,断开连接的方式就是4次挥手。

OSI七层模型

应用层:为应用程序提供服务;
表示层:数据格式转化、数据加密;
会话层:建立、管理和维护会话;
传输层:建立、管理和维护端到端的连接;
网络层:IP选址及路由选择;
数据链路层:提供介质访问和链路管理;
物理层:物理层;
TCP/IP协议的五层模型:
应用层: Talnet FTP HTTP SMTP DNS
传输层:TCP UDP
网络层:IP ARP RARP ICMP IGMP
数据链路层:逻辑链路子层 介质访问子层
物理层:SONET SDH PDH
小注:ARP:广播的方式发送数据包,获取目标主机的MAC地址。
ICMP:IP协议通过ip和子网掩码(网络地址和主机地址)确定所在的子网,但是并不保证数据被送达,保证数据送达的工作应该由其他模块完成。

HTTP默认端口号80,HTTPS默认为443

IP地址和MAC地址在互连网中的作用

IP地址的分配是根据网络的拓扑结构;当存在一个附加层的地址寻址时,设备更易于移动和维修;
不同点:
1.对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。
2.长度不同。IP地址为32位,MAC地址为48位。
3.分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。
4.寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

红黑树和平衡二叉树的区别

红黑树相比于AVL树,牺牲了部分平衡性,以换取删除/插入操作时少量的旋转次数,整体来说,性能优于AVL树。

redis的数据类型

字符串Sting、哈希Hash、列表List、集合Set和有序集合sorted Set

Mysql乐观锁和悲观锁

转至https://risingstar-zr.github.io/2020/07/09/2021%E6%8F%90%E5%89%8D%E6%89%B9-%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E7%8F%AD%E7%BA%A7%E5%90%8C%E5%AD%A6%E6%8F%90%E5%89%8D%E6%89%B9%E9%9D%A2%E7%BB%8F%E8%A7%A3%E6%9E%90/

内连接中on和where的区别

可以看出,使用where子句的查询结果和使用INNER JOIN的查询结果一致。
显示的内连接:SELECT 查询字段 FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段;
隐式的内连接:SELECT 查询字段 FROM 表1,表2 WHERE 表1.关系字段=表2.关系字段;
注意,虽然查询结果相同,但是,INNER JOIN是内连接语句,WHERE是条件判断语句,在where语句后,可以直接添加其他条件,而INNER JOIN不可以。
在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

行锁和表锁

转至https://risingstar-zr.github.io/2020/07/09/2021%E6%8F%90%E5%89%8D%E6%89%B9-%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E7%8F%AD%E7%BA%A7%E5%90%8C%E5%AD%A6%E6%8F%90%E5%89%8D%E6%89%B9%E9%9D%A2%E7%BB%8F%E8%A7%A3%E6%9E%90/

MyISAM的存储机制,适应场景

在大数据量,高并发量的互联网业务场景下,对于MyISAM和InnoDB:
有where条件,count(*)两个存储引擎性能差不多
不要使用全文索引,应当使用《索引外置》的设计方案
事务影响性能,强一致性要求才使用事务
不用外键,由应用程序来保证完整性
不命中索引,InnoDB也不能用行锁

手撕代码题:判断链表中是否有环

思路:设置一个快指针和慢指针,分别前进两步和一步,当它们相遇时即有环,如果走完还未相遇说明没有环。

手撕代码题:给一个字符串数组,数组长度不大于100,每个字符串长度不大于10个字符,找出公共的前缀

思路:for循环遍历,以第一个字符串的全部字符为目标,判断每个元素是否它相等,如果不相等,continue,然后一第一个字符串的全部字符去除最后一个字符再找,不断循环,最终能够找出。

正式批第一轮面试题

JAVA基本类型的长度?

BigInteger底层实现?

单例模式用过吗,介绍一下?

操作系统中IO模型

NIO、BIO、AIO的区别?

Session和Cookie的区别?

Tomcat配置过吗?

手撕代码题:删除单链表的倒数第n个节点?

总结

凉凉

坚持原创技术分享,您的支持将鼓励我继续创作!