go面试题

 

字节

1

go channel close后读的问题

2

Linux grep命令查找日志文件相关内容

3

B+树结构 and 为什么

4

io多路复用,epoll和select的区别

5

计网七层协议、线程进程区别

http://blog.chinaunix.net/uid-25984886-id-3029864.html

6

线程怎么调度

https://segmentfault.com/a/1190000038564512

7

进程通信方法

https://blog.csdn.net/zhaohong_bo/article/details/89552188

8

tcp 保证可靠性

9

go slice 和 array 区别

https://www.jianshu.com/p/10d23e9ffc36

  • 如果切片的容量小于1024个元素,那么扩容的时候slicecap就翻番,乘以2;一旦元素个数超过1024个元素,增长因子就变成1.25,即每次增加原来容量的四分之一。
  • 如果扩容之后,还没有触及原数组的容量,那么,切片中的指针指向的位置,就还是原数组,如果扩容之后,超过了原数组的容量,那么,Go就会开辟一块新的内存,把原来的值拷贝过来,这种情况丝毫不会影响到原数组。

10

GMP 模型

调度相关的四个基本单元是g、m、p、schedt。g是协程任务信息单元,m实际执行体,p是本地资源池和g任务池,schedt是全局资源池和任务池。这里的m对应一个os线程,所以整个执行逻辑简单来说就是"某个os线程m不断尝试拿资源p并找任务g执行,没有可执行g则睡眠,等待唤醒并重复此过程",这个执行逻辑加上sysmon系统线程的定时抢占逻辑实际上就是整个宏观的调度逻辑了(其中穿插了很多唤醒m、system goroutine等等复杂的细节),而找协程任务g的过程占据了其中大部分。g的主要来源有本地队列、全局队列、其他p的本地队列、poller(net和file),以及一些system goroutine比如timerproc、bgsweeper、gcMarkWorker、runfinq、forcegchelper等。

11

分布式缓存框架,singleflight 并发,深挖,一直挖到sync.WaitGroup 

12

 缓存击穿 缓存雪崩 

13

 sync.WaitGroup 

14

 cookie session 

15

 设计学生成绩数据库,并写出查询语文成绩top3的人。 url输入全过程 。从此引出后端除了响应请求还有什么。

16

 什么是分布式系统 

17

 由上面分布式系统 引出负载均衡 

18

 负载均衡算法有哪些 

19

一致性哈希算法 深挖。一致性哈希与普通哈希的区别。

20

 GMP模型 

21

 手撕代码 LRU 

22

 手撕代码 生产者消费者模型 

23

 手撕代码 反转连表 

24

算法题:三数之和 

25

 session如何存储 

26

 多台服务器session存储怎么设计。

27

 除了存redis 还能怎么存(

28

 http 和 https区别 

29

 https详细过程 

30

 get post区别。还有什么其他方法。分别说说是做什么的。 

31

 web安全问题。 

32

 设计一个短链接服务。如何抗住大qps, 抗大流量 。url 哈希函数怎么设计(怎么存,怎么统计qps)

 

腾讯

1

tcp和udp的特性,tcp三次握手、四次挥手

2

http2.0了解吗?和http1.1的差距?

3

反爬了解吗?反爬的几项技术在项目里面怎么实现的?

4

项目部署的服务器是单机的,请问如果是大流量高并发请求服务器怎么处理?

5

数据结构:常用排序算法,快排、堆排的原理和实现。

6

算法:topK,时间复杂度

7

如果是亿级数据怎么处理?

8

b树 b+树区别

9

tcp 可靠性,然后问十六位校验和怎么实现的

10

TCP 粘包

11

进程 协程 线程 

12

跳表怎么实现

13

go的调度

14

go struct能不能比较?

15

go defer(for defer

16

select可以用于什么?

17

context包的用途?

18

client如何实现长连接?

19

主协程如何等其余协程完再操作

20

slice,len,cap,共享,扩容

21

map如何顺序读取?

22

实现set

23

实现消息队列(多生产者,多消费者)

24

大文件排序

25

基本排序,哪些是稳定的

26

http get跟head

27

http 401,403

28

http keep-alive

29

http能不能一次连接多次请求,不等后端返回

30

tcp与udp区别,udp优点,适用场景

31

time-wait的作用

32

数据库如何建索引

33

孤儿进程,僵尸进程

34

死锁条件,如何避免

35

linux命令,查看端口占用,cpu负载,内存占用,如何发送信号给一个进程

36

git文件版本,使用顺序,merge跟rebase

37

项目实现爬虫的流程

38

爬虫如何做的鉴权吗?

39

怎么实现的分布式爬虫

40

电商系统图片多会造成带宽过高,如何解决?

41

micro服务发现

42

mysql底层有哪几种实现方式

43

channel底层实现

44

java nio和go 区别

45

读写锁底层是怎么实现的?

46

go-micro 微服务架构怎么实现水平部署的,代码怎么实现?

47

micro怎么用

48

怎么做服务发现的

49

mysql索引为什么要用B+树?

50

mysql语句性能评测?

51

服务发现有哪些机制

52

raft算法是那种一致性算法

53

raft有什么特点

54

go服务部署到线上了,发现有内存泄露,该怎么处理

55

https 握手,为什么需要 非对称加密 对称加密

 

金山wps

1

PHP-FPM 

2

CGI 是一个 Web Server 与 CGI 程序之间进行数据传输的协议,保证传递的是标准数据 

3

PHP-CGI 是 PHP 解析器(CGI 程序) 

4

FastCGI 是用来提高 CGI 程序性能的方案/协议。FastCGI 会先启动一个 master,解析配置文件,初始化执行环境,然后再启动多个 worker。当请求过来时,master 会传递给一个 worker,然后立即可以接收下一个请求,避免重复劳动,提高效率 

5

PHP-FPM 是实现 FastCGI 的程序 

6

PHP 和 Go 对比 

7

MVC 模式 

8

MySQL 优化(索引、分表分库) 

9

浏览器地址栏输入网址整个过程 

10

TCP 三次握手和四次挥手 

11

Linux 相关(介绍了一下基本操作命令) 

12

Docker 相关 

13

Git 相关 

14

开发环境(Windows、Linux 

15

CI / CD 发布流程 

16

HTTP 长连接(HTTP 1.1 版本) 

17

腾讯音乐

18

 TCP 拥塞控制(快速恢复、快速重传)

19

从面向连接的特性回答

20

 UDP 实现可靠连接

21

TCP 可靠连接特性回答

22

四、MySQL 数据库

23

 MySQL 索引数据结构

24

索引为什么使用 B+ 树

26

 为什么不使用 Hash 结构

27

like 模糊查询 

28

范围查询 

29

结合事务隔离级别

30

Go 语言相关

31

 slice 和 array 区别

32

 向为 nil 的 channel 发送数据会怎么样

33

map 取一个 key,然后修改这个值,原 map 数据的值会不会变化

34

根据 map 存储的类型回答

35

 for 循环遍历 slice 有什么问题

36

 Go 闭包

37

 进程、线程、协程区别

38

技术相关

39

输入 URL 发生的整个网络过程 

40

Redis 怎么保证数据一致性 

41

TCP 流量控制、拥塞控制 

42

TCP 半连接队列 

43

TCP 半关闭状态 

44

TCP TIME_WAIT 状态 

45

内核态、用户态 

46

Hash 实现、冲突解决、应用 

47

快速排序

48

堆排序

49

大小堆 

51

 100 枚硬币,其中有一枚硬币重量不一样,用天平秤怎么快速找到这一枚硬币

 

跟谁学

1

说一下Redis中HashMap的实现(双table,渐进式rehash,扩容条件,缩容条件,bgsave,CopyOnWrite机制) 

2

 扩容过程中有新的请求流程

3

 Redis其他的数据结构(SDS,RAW,INTSET,ZIPLIST,SKIPLIST,QUICKLIST) 

4

 跳表的实现?

5

 Redis的定时任务怎么实现的?

6

 订单服务过期是怎么设计的(RabbitMQ死信队列) 

 

百度

1

数据库问题,给你10个数据库服务器,每个只能接500的qps,现在要实现4000qps,要怎么做?说用负载均衡,使用binlog保证10个服务器的数据一致性 

2

 如果有有读有写,如何实现高并发,数据库读写分离 

3

对于两个写库,两个请求向分别打到两个写库中,他们互相向对方同步,会不会出现不一致,

4

哈希的实现有哪几种,如何取hashcode,冲突检测几种方法 

5

用过go,那么进程,协程,线程各自的优缺点 

6

 算法题 z遍历二叉树,循环有序数组找指定值,

7

 1.事务是怎么实现的?(undo_log,MVCC) 

8

mongodb和redis的区别

9

请你说说golang的CSP思想

10

go 内存逃逸分析(分析了栈帧,讲五种例子,描述堆栈优缺点,点头)

11

是否有逃逸分析过

12

defer recover 的问题

13

mysql 索引慢分析(线上开启slowlog,提取慢查询,然后仔细分析explain 中 tye字段以及extra字段,发生的具体场景及mysql是怎么做的

 

 

原文地址:https://www.cnblogs.com/brady-wang/p/15255502.html