题目来自牛客, 题的答案都是我个人理解的,仅仅只作为复习用.因个人水平有限,不合理的地方请多多指正.
1 给n个1-100间的数怎么排序?计数排序时间空间复杂度
归并排序,快速排序,插入排序,冒泡排序,选择排序 ,桶排序(没用过)
![](https://i-blog.csdnimg.cn/blog_migrate/19241e922addf1ce8472cd5f2ed087f0.png)
2.图如何存储?
一、邻接矩阵法 二、邻接链表法 三、十字链表法 四、多重链表法
3.如何判断图是否有环?时间复杂度?
- 求出图中所有顶点的度,
- 删除图中所有度<=1的顶点以及与该顶点相关的边,把与这些边相关的顶点的度减一
- 如果还有度<=1的顶点重复步骤2
- 最后如果还存在未被删除的顶点,则表示有环;否则没有环
4.说说list,set,map之间的区别,哪些能存null
这是个大问题,建议详细学习下,集合涉及很多考点 敲黑板的重点
List
(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set
(注重独一无二的性质): 存储的元素是无序的、不可重复的。Map
(用 Key 来搜索的专家): 使用键值对(kye-value)存储,类似于数学上的函数 y=f(x),“x”代表 key,"y"代表 value,Key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。
5.collection与Collections的区别呢?
Collection 是一个集合接口(集合类的一个顶级接口)list,set 都实现与它。它提供了对集合对象进行基本操作的通用接口方法.
Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
6.jvm内存模型,哪些会oom?
jvm中存在五个区域(堆区,方法区,本地方法栈,虚拟机栈,程序计数器)
堆
随着对象的增多且与GC Roots都有可达路径
–》堆溢出(OOM): -Xmx 设置堆max大小 -Xms设置堆初始大小
–》 内存泄漏 :长生命周期的obj持有短生命周期的obj的引用,例如长生命周期的单例对象持有一个无用对象。
随着栈帧的增加
–》栈溢出(OOM):无法申请足够的内存 -Xss 设置栈大小
–》stackOverFlowError: 一般为递归造成 线程请求栈深度 > JVM允许深度
1.8改为元空间 至于本地内存有关 -XX:MaxPermSize 设置大小
常见OOM原因:
1.一次性加载的数据量过大,如一次从数据库去除过多数据或从excel读取过多数据
2.集合类中有对对象的引用,使用完后为清空,是的jvm不能回收
3.代码中存在死循环或者循环中产生过多重复的对象实体
4.第三方插件中的bug
5.启动参数设置过小
7.如何使虚拟机栈oom?
用new不停申请内存就可能会发生
8.Linux常用的命令有哪些?
ls ,rm, mkdir, ps, grep , tail , cd ,find , chmod (权限)
9怎么用mkdir创建多级目录?
mkdir -p aaa/bbb/ccc
10.less和more的区别,head和tail的区别
less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
tail命令和head 命令非常相似,只不过它是打印文件的尾部内容,head打印的是头部内容
11.用什么命令交换文本文件中的两行
不会
12.chmod改权限的参数777
chmod 777 文件或目录 即可修改权限
13.TCP/IP模型
14.应用层有哪些协议?
(1)域名系bai统(Domain Name System,DNS):用于实现du网络设备名字到IP地址映射的网络服务zhi。
(2)文件传dao输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。
(3)简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能。
(4)超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。
(5)简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。
(6)远程登录协议(Telnet):用于实现远程登录功能。
15.http与https的区别
HTTP特点:
- 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
- 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
- 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
- 简单快速、灵活
- 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
16.加密算法有哪些?具体的对称和非对称的有哪些
MD5算法 SHA1算法 HMAC算法 RSA算法
对称加密算法 是应用较早的加密算法,又称为 共享密钥加密算法。
非对称加密算法,又称为 公开密钥加密算法。它需要两个密钥,一个称为 公开密钥 (public key
),即 公钥,另一个称为 私有密钥 (private key
),即 私钥。
17线程和进程的区别,协程是什么?
1.进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。还存在资源开销、包含关系、内存分配、影响关系、执行过程等区别...
2.同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源相互独立。
协程是比线程更小的一种执行单元,你可以认为是轻量级的线程
18.进程通信方式
IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。