面灵AI→

腾讯后端日常一面二面:Go 与数据库八股加四道代码题

轮次
多轮面试合集
时间
2026-04
来源
牛客网

《面试题目》

  1. Go 与数据库相关八股(帖中未展开具体题目,作者评价比较简单)。
  2. 代码题:字符串压缩解压缩,例如「aaabbbc」输出「a3b3c」。
  3. 代码题:交替打印奇偶数。
  4. 代码题:自己新建一个文件并按形如 a 1、b 2,5、c 3,4 的格式写入几行数据,然后写程序读出 b 这一行,把后面的两个数字相加。
  5. 代码题:给一个 URL,访问它并拿到返回数据,再解析其中某个特定字段,把解析得到的数字做相加。

《参考解析》

  1. 字符串压缩:一次遍历配一个计数指针即可,写之前先把约定问清楚——单个字符要不要写成「1」、连续个数超过 9 时是拆成两个数字还是用定长表示。解压侧是「字母 + 数字」的解析,数字可能是多位,还要处理末尾没有数字、出现非法字符这类输入。面试时先给出你选择的格式约定再动手,能省掉一半返工。
  2. 交替打印奇偶数:两个 goroutine 交替输出,核心是同步与唤醒。最简单的做法是用一个无缓冲 channel 互相传递令牌:发送即阻塞,天然把执行权交给对方,不会忙等,也最容易讲清楚;也可以用两把锁加条件变量或 sync.Cond。要能说出为什么不用「两个共享变量加轮询」——那既忙等又有可见性问题。
  3. 读文件做数值运算:按行读取、按分隔符切分、只处理键匹配的那一行,再把逗号分隔的数字解析出来求和,注意字段缺失、非数字内容、多余空格和空行。这类题考的不是算法而是工程细节:错误怎么处理、文件句柄怎么关、是不是按需读取而不是全量加载。写完补一句「如果文件很大就改成流式扫描」,能体现你知道这段代码的适用边界。
  4. 请求 URL 解析字段:用标准库发 HTTP 请求,先检查状态码和响应内容,再按格式解析——JSON 用序列化库解到结构体,类型安全且省事;HTML 或纯文本再用正则或字符串切分。面试时顺带说超时设置、连接复用和错误处理,这些比把数字算出来更能体现工程习惯。如果解析字段可能缺失,要把默认值和失败路径一起写掉,别让程序在这里 panic。