go基础
1、redis部署多节点模式,异步队列
2、go-redis和redis-go //go-redis的连接模式,直连哨兵
3、go异常处理,异常捕获方式,go里面替代try-catch如何操作
4、gomaxprocs的默认核数
5、tcp连接和断连的状态
6、slice的扩容机制,一开始是2倍,
7、线程的分类,进程间通信的方式?
8、golang协程怎么实现
9、进程线程和协程的区别?
①、线程和进程都是同步机制,协程是异步机制。
②、线程是抢占式,协程是非抢占式,需要用户是否使用权切换到其他协程,因此同一时间其实只有一个协程用于运行权,相当于单线程的能力。
③、一个线程可以有多个协程,一个进程也可以有多个协程,协程不被操作系统内核管理,完全由程序控制
10、并发和并行有什么区别?
并发:就是在一段时间内,多个任务都会被处理。但在某一时刻,只有一个任务在执行。单核处理器可以做到并发,比如两个进程A和B,A运行一个时间片之后,切换到B,B运行一个时间片之后切换到A,因为切换时间够快,宏观上表现为在一段时间内能运行多个程序
并行:并行就是在同一时刻,有多个任务在执行。这个需要多核处理器才能完成,微观上就能同时执行多个指令,不同的程序被放到不同的处理器上运行,这个是物理上的多个进程同时进行
11、append原理
append的底层操作:返回一个新的切片,在内存中切片的指针被更新,底层数组扩容的话也会被更新
12、
操作系统:
1、系统中断,中断过程,软中断,硬中断
2、操作系统死锁怎么产生四个条件,产生如何处理,(互斥条件,循环等待、请求保持),怎么预防
3、linuxgdb
4、抓包
网络:
1、http和https区别,https加密的过程,https的缺点
2、cookie和session的区别?
①、作用范围不同,cookie保存在客户端(浏览器),所以容易遭攻击,session保存在服务器端,安全性更好
②、存取方式不同,cookie只能保存ASCII,Session可以存储任意数据类型,一般情况下我们可以在Session中保存一些常用变量信息,比如说UserID等
③、有效期不同,Cookied可以设置长时间保持,Session一般时间较短
④、存储大小不同,单个cookie保存的数据不能超过4K,Session可存储数据远高于Cookie
3、什么是Cookie?
服务器发送到用户浏览器并保存在浏览器的一小块数据,他会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上,通常,用于告知服务端两个请求是否来自同一浏览器。
Cookie主要用于以下三个方面:
购物车状态,登录状态,个性化设置,
4、什么是session?
Session代表着服务器和客户端一次会话的过程。Session对象存储特定用户会话所需的属性以及配置信息。这样,当用户在应用程序的web页之间跳转时,存储在session对象中的变量将不会丢失,而是在整个用户会话中一直存下去,
5、Cookie和session如何配合?
用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session ,请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器,浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID 属于哪个域名。
当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。
根据以上流程可知,SessionID 是连接 Cookie 和 Session 的一道桥梁,大部分系统也是根据此原理来验证用户登录状态。
mysql:
1、tinyint int bigint
2、tinyint(1)和tinyint(11)
3、索引分聚集和非聚集,
聚集:一张表只能有一个
非聚集:需要二次回表
4、b+树索引,b树索引,哈希索引,innodb索引的用的是b+树索引,自适应哈希索引
为什么innodb不用b树索引?
答:1、b树相对于b+树,叶子节点之间没有联系,磁盘io的时候,指针寻道时间开销比较大,一次性会选择读取一片空间,叶子节点连到一起的话符合磁盘读取的方式
2、b+树存放的是key值,b树非叶子节点也会存放datch,相对来说表更大,占用空间更大,b+树每个节点里存放的数据越多,树高越低,
redis:
1、set和zset区别:无序和有序
2、redis超时时间的原理:lru清除机制,随机数,
3、redis批量操作:管道,管道跟服务端没有关系,redis跟服务端交互是要发送在本地缓冲区,本地有两个缓冲区,receive缓冲区,需要把指令发到缓冲区,再和服务端交互,每条指令交互一次,管道可以将指令一次性存到缓冲区,将多次读和多次写发到一个,这样可以一个指令来回,进行多次的读写,是在客户端
4、redis实现分布式锁,setnx实现,加一些过期时间,为什么setnx可以实现,setnx是原子性
数据结构:
堆和栈区别:
堆存储局部变量
标签:面试题,协程,redis,用户,golang,Session,Cookie,浏览器 From: https://www.cnblogs.com/wuchangblog/p/16729739.html