大厂Golang开发工程师面试题集锦 2 years ago
字节
- 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 是怎么做的