来源:牛客网面经
面经解析:
1.项目(跳过,如实和面试官讲即可。)
2.两道题目:
1)全排列问题实现
2)写一个死锁的demo(两个线程,其中一个Synchronize之后引用了B,另外一个之后引用了A,互相引用)
3.tcp和udp区别
TCP(Transmission Control Protocol,传输控制协议),UDP(User Datagram Protocol)用户数据报协议,二者用处不同。(连接)TCP要先建立连接(三次握手),UDP无连接,直接传即可。(服务对象)TCP只能一对一,UDP可以多对一、一对多、多对多、一对一。(可靠性)UDP不行。(拥塞控制/流量控制)UDP没有拥塞控制。(首部开销)TCP开销大20个字节,UDP开销小8个字节,源端口,目的端口,数据长度,校验和。(适用场景)TCP优先保证数据完整性,文件/邮件传输、重要状态的更新等;UDP优先保证实时性,视频传输、实时通信。
4.三次握手
客户端先发送SYN(Synchronize Sequence Numbers,同步序列编号),SYN_SENT状态。
之后服务器端回传SYN+ACK(Acknowledge character,确认字符)确认,SYN_RCVD状态;
最后客户端发送ACK确认,建立连接,二者均为ESTABLISHED状态。
5.Linux命令(知道啥说啥)
就知道2021Java春招集训营项目里,那些putty部署ECS服务器时用到的命令。yum list java*(找到能装的JDK列表)、yum -y install+包名(能装的文件)、ll(查看当前目录下文件)、vim+文件名(打开要求改的文件)、i(文件内开启insert模式)、:wq(文件内保存退出)、:q(文件内普通退出)、mysql -uroot -p+密码(打开mysql)、show databases(查看文件是否上传到mysql中)
6.索引的优缺点,及实现
索引是单独存储在磁盘上的数据库结构。
优点:1.创建唯一索引,保证数据库表中每一行的唯一性;2.加快查询速度;3.使用分组和排序进行查询时,大量降低操作所需时间。
缺点:1.创建索引和维护索引要耗费时间;2.表中增删改时候,索引也要弄;3.索引文件占空间;
实现跟存储引擎相关,MySQL的存储引擎为大多用InnoDB,默认支持BTree索引;MySQL也支持HASH索引。
7.最喜欢的专业课(C语言程序设计,只与这个相关)
8.计网分层的原因
各层之间,是解耦状态,可以选用不同的协议实现不同的功能。
9.session和cookies的区别
存储位置:c在客户端,s在服务器端;存储方式:c只能保存ASCII字符串,s可以任何(字符串、整数、集合等);隐私策略:c客户端可见,有安全风险,s存在服务器端,隐私安全;服务器压力:s存在服务器端,会堆积;跨域支持:s不能跨域。
普通数据存c中,敏感数据存s中。
10.深拷贝和浅拷贝区别
对于引用数据类型存在。浅拷贝只复制地址(指针),深拷贝会复制对象。
11.数据库表中加密信息怎么处理
(不知道)
12.微信发红包测试用例
正确/错误金额(0.x分钱,>200,<0)+有/无留言+有/无表情包+有/无封面
中文、英文、特殊字符或者这几种的组合、是否支持复制黏贴
为空/包含空格、金额的增删查改、留言的增删查改、留言超长文本
13.朋友圈加载慢原因
网速不足;手机内存不够;图片过多过大;
14.输入url到页面渲染的过程
1.DNS 解析获得ip地址;2.TCP连接,获得ip后,向服务器发起三次握手请求;3.发送 HTTP 请求:客户端向服务器HTTP请求,索要HTML页面等;4.处理请求并返回:服务器端处理请求并返回;5.浏览器渲染:解析HTML文件构建DOM树,解析CSS文件构建渲染树
15.应用层协议有哪些
主机间发文件FTP、发邮件SMTP、POP3、域名系统DNS,实现网络设备名字到IP地址映射、HTTP明文发送和接收HTML文件等。
16.Java单例模式,垃圾回收机制,面向对象三大特性
单例类必须自己创建自己的唯一实例,类似于全局变量(实例)。
定义垃圾:引用计数算法(计数为零时候可回收)、可达性分析算法GC Roots(无引用链);怎么回收垃圾:分代收集理论(新生代生命周期短,老年代长)、标记清除(标记后清除,产生碎片内存,执行效率低)、标记整理(将存活对象放一端)、标记复制(内存分两块,用完后,将存活的对象复制到另外一块上)。
面向对象,之前的是面向过程编程,Java,是把对象、它的属性、行为关联起来。
17.python引入包的方式,用法及区别
(不知道)
18.反问
(blabla)