2021.7.26 字节终端平台一面面经
PreWork:
自我介绍:
面试官好, 我是来自***, 目前是一名计算机学院大三的学生. 大一的时候加入了acm集训队, 在集训期间拿了一些区预赛竞赛名次,在大二下学期的时候,凭借算法基础, 拿到了字节远程实习的offer.(远程是因为当时疫情比较严重,武汉这边封城). 在实习的两个月里, 我领略到了许多开发项目相关的知识(疫情严重),在之后的半年里 我又自学了一些go 相关的知识, 然后在github上也做了一些demo, 今年寒假的时候, 我又拿到了腾讯 PCG的offer, 也是 go的后端, 在这边一直实习到现在.
FAQ:
Q:能讲一下之前在字节这边干了什么事儿吗?
A:**
Q: 在TX这边主要是做什么呢?
A:***
Q: 用到了什么技术栈?
A: 这边持久层用的MYSQL, 然后还有一些定时任务(trpc-orm),tdmq消息队列.
Q: 项目有没有遇到什么困难, 是怎么解决的.
A:拉取数据的时候,有一个比较重要的接口偶现502
1, 临时方案: 加上retry, 且设置retry次数.
2, 找了接口提供方联调,发现这边只能感知到成功请求的case, 问题初步定位在我跟接口方偶尔不通,
注意到这个接口经过了智能网关鉴权, 又拉上智能网关的运维, 发现我打到智能网关的路是通的, 问题出在智能网关和接口提供方不通, 后来拉上双方联调, 最终发现是 接口提供方要对智能网关出口的的几台IP加白.
还有一个git 相关的困难:
当时项目参加了EPC评分规范, 要求全量单测覆盖率要达到60%, 我边开发需求边补以前的单测, 提了一次MR, 合入master,上线之后发现有个边缘case 会导致panic. 赶紧回滚, 就revert了这次MR, 然后cover掉相关case之后,再提MR, 代码和合入进去跟以前一样,没有我新提交的改动.
Revert的本质是 在提一次MR 来重置之前commit, git历史会保留此词MR已经被重置了, 再想提此次MR的时候会 git会认为 这次来的commit 已经在历史上被revert了, 所以合入的结果始终是revert之后的结果;
解决方案: revert 掉之前的revert, 再提MR.
Q: 为什么有跳到这边来的想法?
A:这边的业务大多面向内部,流量不是很大, 纯写业务感觉成长比较少. 期望能到这边来接触并发量比较高的业务场景, 提升自己的技术.
面经
- 说说之前在字节的项目
- 说说你目前在tx做的项目(项目的意义,你是什么角色)
- 进程/线程/协程的区别
- 网络IO模型 (select poll epoll)
- linux 用的多嘛, 如何实现命令行跑定时任务, 如何查看端口占用情况(itoa), 查看本机网络情况(ifconfig), 如何让命令在后台运行(nohup & ), 然后给了一段命令 里面有 「2>&1」 描述一下什么意思(标准输入/输出流重定向), 怎么用命令行跑定时命令
- 给了一段go的代码 让你判断输出(涉及 结构体和接口之间的比较)
- docker 有用过么 讲一下怎么实现隔离的
- 切换进程的时候,有涉及到换页操作吗
- 给一段 子查询的 Mysql 语句 让优化(不会), 然后说一下 命令执行顺序 (from select where, order by,group by)
- 如果线上mysql出现查询效率极低,怎么debug (查bin log 利用时间戳找到耗时较长的语句, explain 这条语句,看看是否选错索引)
算法
有无想问的问题:
- 业务类型 (ToB, CD/CI 建设 听说 au 6000/天)
- 工作地点(中关村,中航矮楼旁)
全部评论
(3) 回帖