4.8 腾讯 TEG 云架构后端实习,一面秒寄

BG:九本,科学院硕

自我介绍,介绍项目,项目是打 OS 功能赛做的,我对项目细节非常熟悉,面试官的提问都在意料之中(全都防出去了)。
然后说部门是做分布式存储的,考虑换方向吗?
然后开始坐牢
1. 智力题,找出超大文件中的出现次数最多的字符串,文件 10 T,单个字符串最大 2 G,给定 64 G 的内存
    答:对每个字符串 hash 再计数  回:字符串种类特别多,内存放不下
    答:外部排序?但是具体怎么实现忘了
    后面发现是个常见的场景题,参考这两种解法:https://zhuanlan.zhihu.com/p/496869606
    然后,面试官试图把我拽回第一种解法,提示通过哈希把大文件拆成小文件,还是答不出,寄了。
2.  问操作系统
    平时了解 OS 看什么书?《深入理解 Linux 内核》《linux/unix系统编程手册》。
    经常看源码吗?看得不是很多,就打比赛的时候针对性地看了调度相关的
    最了解 OS 哪几个模块? 调度和内存。
    常见的锁?只了解自旋锁、互斥锁、信号量的实现。
    实现读写锁。不会,寄了
    问缺页置换算法?就说了一个 CLOCK(到这里已经神志不清了,我当时觉得我答得太简单了,以为要 Linux 高版本正在使用的算法),后面问 OPT 为什么实现不了,因为要知道将来的访存信息

最后手撕,感觉是 hard

给一个整数 n (1到 10^9),给定两种操作:1)乘以任意一个整数  2)开方,结果必须是整数 ,要求通过以上两种操作得到最小的数所需要的最少操作的次数

例如:
输入: 20
输出:3 (20 X 5 再开方得到10)

然后限定只能用 C 

我的思路是分解 n 为质因数之积,统计各个质因数出现的次数,取出现次数最大的质因数,把它变成偶数(最多只乘一次),然后不停地开方(如果开方是奇数,再+1变成偶数)

然后在做的时候被吐槽了:
1)我直接开了一个数组存计数(没法用标准库 hash 表计数),我也知道会爆内存,就象征性地开了个数组,打算整个写完再改改,然后在写的过程中就被吐槽了。
2)筛选质数的算法(https://oi-wiki.org/math/number-theory/sieve/)太久没用忘了,面试官说暴力筛会超时

最后时间有限没写完,说一下思路,面试官承认思路很接近了,找到出现次数最大的质数,大概求 log(n) 就行了。

其他:本科成绩,数据结构课程成绩,什么方面需要提升?打磨自己的优势,打好基础

当晚面完(1#牛客AI配图神器# 个多小时),晚上流程结束

总结:死于八股和算法,面试官看重数据结构和算法,然后过程中给他的印象是这方面还不够扎实[笑cry[牛泪]

update: 吐槽
1)说我做不出来智力题说明不了解文件系统,这玩意和文件系统有很大关吗?就套皮八股/算法
2)我说质因数计数没标准库哈希表做不了,面试官甩出用两个数组计数:
  int part[]
  int count[]

  part[k] = i(i 是质因数)
  count[k++] += 1
称不能用标准库,有点搞人
全部评论

相关推荐

腾讯teg-后端 一面 2025/03/191h40min- 2道算法题:  - 只有012的数组按012的顺序摆放(不使用代码库的排序函数)面试官希望不使用排序的思路  - lc442 数组中重复的数,O1空间,On时间  - 第二题做不出来,换成:最长不重复子串(a了)- 八股(计网、mysql、操作系统、数据结构)拷打  - 两端建立通信,客户端抓包可以抓到哪些包  - linux    - dmesg    - ps、pidstat    - 系统oom,查日志    - 查某个程序运行在哪个目录    - strace  - dma是    - DMA(Direct Memory Access,直接内存访问) 是计算机系统中一种高效的数据传输技术,允许外部设备(如硬盘、网卡、显卡等)直接与内存(RAM)交换数据,而无需通过 CPU 的介入。这种方式大幅降低了 CPU 的负担,提升了系统整体性能。  - 线程、协程;协程共享线程的寄存器吗、线程共享进程的哪些东西、进程如何切换  - 系统调用  - 数据结构 哈希表,发生冲突怎么办  - go程序发生内存泄露怎么排查  - go的make、gmp的worker steal、全局G队列  - 什么时候选择多线程执行、什么时候选择单线程  - tcp的keepalive和http的keepalive、tcp保活机制、接受到历史请求怎么处理  - 对大模型的看法  - 说说项目里的h264解码同程旅行-后端 一面 2025/03/2050min(无算法,俩面试官)- 主要是聊项目、实习的产出  - 音视频这个项目主要做了什么,作为组长负责了啥  - OTEL sdk怎么用的,里面有什么属性,怎么上报的  - 基于项目背景,问了一些sql怎么写- linux的命令  - 查看网络连接  - 查看某个端口属于哪个程序  - 查某个端口的连接处于什么状态- tcp四次挥手- http的结构- 实习公司内部框架,微服务项目结构等等- sql注入  - 检验  - orm层:mybatis 参数化查询- 个人未来三年规划腾讯teg-后端 二面 2025/03/241h13min- 面试官介绍了6~8分钟部门负责的内容(服务流量上亿)- 三题:  - 查TCP的长连接 和 监听的端口(netstat 的-p表示啥)  - 最长不重复子串  - 由三种括号组成的字符串,判断合法性,有优先级:{>[>(- go的context概念?场景?被调用方怎么知道ctx超时结束了?(select {<-ctx.Done()} )- mysql的gap lock概念?场景?- mysql,只有主键索引,查询时使用其他字段去查询的话,是怎么解决一致性问题的?(MVCC)- 口述执行细节:无序链表变成有序。(一开始说了冒泡算法,后面想起了自底向上的归并排序)- tcp三次握手中第二次握手丢失会怎么样?- 客户端发送第三次握手(丢失)后,又发送数据包,会怎么样?  - https://zhuanlan.zhihu.com/p/706132932  - 客户端没有发数据包:ACK 报文是不会有重传的,当 ACK 丢失了,就由对方重传对应的报文  - 客户端有发数据包:在第三次握手中的ACK报文段,根据RFC 793,是可以携带数据的。这是因为此时连接已经基本建立,客户端可以开始发送应用数据,而不需要额外的往返时间(RTT)。除了最初的连接建立请求(SYN报文段)之外,TCP规定所有其他报文段,包括数据传输报文段和连接关闭报文段,都应该将ACK标志位设置为1。可以看到,客户端发送的这个数据包,它也会把ACK标志置为1,那么服务端就可以把这个数据包当做是ack确认包从而建立连接。- 实习期间遇到的最大难点,如何解决- 团队协作遇到的难点- 反问:自适应限流算法常用吗?比较理想,计算有延后性,像一些吞吐量大、敏感的场景就用不上,最常用的还是简单的限流算法,比如平等地按比例限流。腾讯-后端 三面 2025/03/2740min- 简单自我介绍- 实习里最有难点的地方。(就是比较难实现的点)- 负载均衡算法,一致性哈希算法扩缩容- 从文件系统中读取后修改,再通过socket发送网络,里面涉及了几次数据拷贝  - 底层怎么做?(sendfile)零拷贝,mmap是什么?(mmap+write:使用mmap代替read,减少一次CPU拷贝,节省一半的内存空间)  - mmap实现零拷贝_mmap 零拷贝-CSDN博客- 多副本怎么保证一致性?(只知道redis的redlock)了解强一致性算法吗?- 设计题:一个微博系统,类似发个朋友圈,需要什么结构存储这种文章列表?大v这种,有大量的粉丝,怎么设计?(单用消息队列缓解写压力还不够,可以给每个人维护自己的大v列表,查完普通朋友的文章再另外去看大v有没有发文章,这样大v就不用往大量粉丝的文章列表里一直写入)- 服务怎么保证高可用?(说了很多事后解决方案)说一下预防的手段、除了组件内部自身的高可用,自己能做的有哪些,负载均衡在哪一方做的,自动计算权重的吗?(我们要传入接口耗时等数据,然后负载均衡再计算)- 最近学习的新技术?平时如何学习一个新的技术?看什么公众号、网站学习的?腾讯研发管理部-后端 HR面 2025/03/2825min- 面试前发了云证- 聊项目遇到的难点,有没有失败过的项目- 对于工作看重哪些地方- 要不要回学校搞毕设什么的- 反问
点赞 评论 收藏
分享
评论
2
6
分享

创作者周榜

更多
牛客网
牛客企业服务