首页 > 其他分享 >golang面试题3

golang面试题3

时间:2022-09-26 09:23:09浏览次数:51  
标签:面试题 协程 redis 用户 golang Session Cookie 浏览器

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

相关文章

  • 面试题1
    #第一题(列举了解的编程语言及语言的区别)编译型语言:一次性把代码都编译成二进制,然后运行解释型语言:实时性一行一行,编译一句,运行一句1.python解释型简洁高效,......
  • 密码学奇妙之旅、01 CFB密文反馈模式、AES标准、Golang代码
    CFB密文反馈模式CFB密文反馈模式属于分组密码模式中的一种。加密与解密使用同一结构,加密步骤生成用于异或的密钥流。其弥补了ECB电子密码本模式的不足(明文中的重复排列会......
  • golang中下划线的作用
    1.忽略返回值2判断一个类是否实现了某个接口//定义了一个animal接口1typeAnimalinterface{Say()}//定义了一个dog结构体typeDogstruct{}//用来判断Do......
  • 2022-09-25-近60道MySQL经典面试题
    近60道MySQL经典面试题mysql面试常见问题学习整理2.3.17.18.19.20.44未看。1.B树和B+树之间的区别是?为什么mysql使用B+树?一个节点有多个元素;B+树也是排序了的;B+树非叶......
  • 【golang】json数据解析 - 嵌套json解析
    @目录1.通过结构体映射解析2.嵌套json解析-map1.通过结构体映射解析原数据结构解析//结构体typecontractJsonstruct{ Data[]transaction`json:"data"` T......
  • 代码随想录 两两交换链表中的节点(LeetCode 24), 删除链表的倒数第N个节点(LeetCode 1
    两两交换链表中的节点题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。题目链接示例:题解对于奇数个节点,最后一个节点不交换。结束条件:对于奇数个节......
  • Redis面试题
    1.项目中是否使用过redis?为什么要使用redis?使用过之前使用的都是修改某个value值,如登录账号被锁定30分钟,查看还剩余的时间,或者想将账号由锁定状态更新为未锁定状态,删......
  • 55道软件测试精品面试题分享!内附答案!
    1、你的测试职业发展是什么?测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按......
  • 前端高频面试题及答案整理(一)
    diff算法是怎么运作每一种节点类型有自己的属性,也就是prop,每次进行diff的时候,react会先比较该节点类型,假如节点类型不一样,那么react会直接删除该节点,然后直接创建新的节......
  • golang goroutine协程泄露
      语言级别的并发支持是Go的一大优势,但这个优势也很容易被滥用。通常我们在开始Go并发学习时,常常听别人说,Go的并发非常简单,在调用函数前加上go关键词便可启动g......