Introduction to VPS and Web Technology Development

2023年golang面试题集锦

自由vps golang面试题
1.uint 1 - uint2 = ?? ,为啥

    答案:127 ,go 是强类型语言,uint 计算的类型也肯定是uint 类型
1-2相当于0-1,计算机里面的减法运算其实都是加法进行编译的,相当于0加-1,负数的计算都会转换成补码,-1的补码就是所有位数都是1,以无符号的类型去识别的话,就会转换成当前类型的最大值    


2. Mutex几种模式
    1. 正常模式
当前的mutex只有一个goruntine来获取,那么没有竞争,直接返回。
新的goruntine进来,如果当前mutex已经被获取了,则该goruntine进入一个先入先出的waiter队列,
在mutex被释放后,waiter按照先进先出的方式获取锁。
该goruntine会处于自旋状态,持续的探测锁的状态,
自旋过程中能抢到锁,一定意味着同一时刻有协程释放了锁。我们知道释放锁时,如果发现有阻塞等待的协程,那么还会释放一个信号量来唤醒一个等待协程,被唤醒的协程得到 CPU 后开始运行,此时发现锁已经被抢占了,自己只好再次阻塞,不过阻塞前会判断,自上次阻塞到本次阻塞经过了多长时间,如果超过 1ms,则会将 Mutex 标记为 Starving模式,然后阻塞。
  2.饥饿模式下,
不会启动自旋过程,一旦有协程释放了锁,一定会唤醒协程,被唤醒的协程将成功获取锁,同时会把等待计数减 1。



3. http1.1与http2的区别 

    解释: https://zhuanlan.zhihu.com/p/85093818  
使用chatGPT寻求答案
标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:master@freevpsweb.com

同类推荐
评论列表