Scott

大厂Golang开发工程师面试题集锦 2 years ago

go
面试
3745个字符
共有483人围观

字节

  • 1.go channel close 后读的问题
  • 2.Linux grep 命令查找日志文件相关内容
  • 3.B+树结构 and 为什么
  • 4.io 多路复用,epoll 和 select 的区别
  • 5.计网七层协议、线程进程区别
  • 6.线程怎么调度
  • 7.进程通信方法
  • 8.tcp 保证可靠性
  • 9.go slice 和 array 区别
  • 10.GMP 模型
  • 11.分布式缓存框架,singleflight 并发,深挖,一直挖到 sync.WaitGroup
  • 12.缓存击穿 缓存雪崩
  • 13.sync.WaitGroup
  • 14.cookie session
  • 15.设计学生成绩数据库,并写出查询语文成绩 top3 的人。 url 输入全过程 。从此引出后端除了响应请求还有什么。
  • 16.什么是分布式系统
  • 17.由上面分布式系统 引出负载均衡
  • 18.负载均衡算法有哪些
  • 19.一致性哈希算法 深挖。一致性哈希与普通哈希的区别。
  • 20.手撕代码 LRU
  • 21.手撕代码 生产者消费者模型
  • 22.手撕代码 反转连表
  • 23.算法题:三数之和
  • 24.session 如何存储
  • 25.多台服务器 session 存储怎么设计。
  • 26.除了存 redis 还能怎么存(
  • 27.http 和 https 区别
  • 28.https 详细过程
  • 29.get post 区别。还有什么其他方法。分别说说是做什么的。
  • 30.web 安全问题。
  • 31.设计一个短链接服务。如何抗住大 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.TCP 拥塞控制(快速恢复、快速重传)
  • 18.从面向连接的特性回答
  • 19.UDP 实现可靠连接
  • 20.从 TCP 可靠连接特性回答
  • 21.四、MySQL 数据库
  • 22.MySQL 索引数据结构
  • 23.索引为什么使用 B+ 树
  • 24.为什么不使用 Hash 结构
  • 25.like 模糊查询
  • 26.范围查询
  • 27.结合事务隔离级别
  • 28.Go 语言相关
  • 29.slice 和 array 区别
  • 30.向为 nil 的 channel 发送数据会怎么样
  • 31.map 取一个 key,然后修改这个值,原 map 数据的值会不会变化
  • 32.根据 map 存储的类型回答
  • 33.for 循环遍历 slice 有什么问题
  • 34.Go 闭包
  • 35.进程、线程、协程区别
  • 36.技术相关
  • 37.输入 URL 发生的整个网络过程
  • 38.Redis 怎么保证数据一致性
  • 39.TCP 流量控制、拥塞控制
  • 40.TCP 半连接队列
  • 41.TCP 半关闭状态
  • 42.TCP TIME_WAIT 状态
  • 43.内核态、用户态
  • 44.Hash 实现、冲突解决、应用
  • 45.快速排序
  • 46.堆排序
  • 47.大小堆
  • 48.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.事务是怎么实现的?(undo_log,MVCC)
  • 8.mongodb 和 redis 的区别
  • 9.请你说说 golang 的 CSP 思想
  • 10.go 内存逃逸分析(分析了栈帧,讲五种例子,描述堆栈优缺点,点头)
  • 11.是否有逃逸分析过
  • 12.defer recover 的问题
  • 13.mysql 索引慢分析(线上开启 slowlog,提取慢查询,然后仔细分析 explain 中tye 字段以及 extra 字段,发生的具体场景及 mysql 是怎么做的