面经知识
二叉树层次遍历(数据结构):利用队列,先从根节点开始,入队,出队时,左右子树入队
二叉树深度遍历 :先序(根左右)或者中(左根右)序或者后(左右根)序遍历,递归返回值,取最大值
Go内存泄漏的原因:
因Go向系统申请内存不使用后,并不立即归还系统
给系统压力,停止给压力后,内存不能降低
LRU算法:
LRU算法,哈希链表,哈希表都是Key和value,理论上是无序的,哈希链表的每一个key和value就有前驱和后继节点
哈希表,哈希函数:能根据key算出地址,key和value是无所谓排列顺序的
Go数组和slice的区别
Go数组定义时候需要定长,slice不需要
Slice可以append go不行
Slice有自己的copy函数,go数组相同大小时候可以赋值,拷贝全部内容,slice是指针一样。
Tcp/Ip协议:
连接:三次握手,发送FIN和SYN
我:1+1等于几 你:2,2+2=几 我:4 若没有收到则认为网络不通
断开:四次挥手 客户端向服务端发送断链接的请求+FIN,服务端向客户端发送已关闭应用程序,并发送ACK=FIN+SEQ 客户端接收到FIN,发送一个ACK=FIN+SEQ
线程,协程,进程的区别
进程:划分程序运行需要的资源,程序运行的基本单位,
线程:切换程序花费时间多,因为需要切换到内核态,需要读取用户态的数据,进程多的时候会消耗一大堆资源,共享进程的资源,只占用运行时需要的很少的资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
协程:协程是一种用户态轻量级线程,调度由用户控制,拥有自己的寄存器上下文和栈。
线程和进程的区别:
进程有独立的地址空间,一个进程至少有一个线程,线程共享进程的地址空间
进程是资源分配的单位,线程共享进程拥有的资源
线程是处理器调度的基本单位,进程不是
协程与线程比较
一个线程可以有多个协程,线程是同步机制,协程是异步
协程能保存上一次调用的状态,因为有自己的寄存器上下文和栈。
Linux常用命令
Touch 创建一个文件
ls 显示当前目录下的所有文件
浙公网安备 33010602011771号