找实习几个月的心路历程

先说为啥转cpp,之前因为字节校园(现在没了)参与的一个前端开发项目而做了一段时间前端,java go python也都有做过,但后来发现自己更想做底端一点的(其实是前端面试挂麻了),加上本科cpp和cs基础还行,于是就决定转战cpp
由于自己算法能力偏弱,第一步决定先刷力扣。大概做了一个月左右,基本就是代码随想录+lcr200多题,外加hot100(里面有一些重复)。感觉这段时间集中刷题,对于很多算法和数据结构有了比较深刻的认识,也慢慢形成了一些方法。
然后就开始看书背八股,因为有一定cpp基础,就没有去看primer cpp,主要看的代码随想录星球里总结的cpp八股。看八股的同时,自己也去敲敲代码,看看std和stl的一些源码实现,写一写模板和模板元编程相关。然后就是计算机基础,这块因为本科学的还有不少印象,看起来比较快,然后还翻起以前的课件来加深一点理解。
看完八股的时候已经3月中旬,看到牛友们很多都已经在流程中,有的已经都拿到offer了,不免有些慌张,但是又不敢投,因为还没做项目。一开始打算直接就webserver,但是听说已经烂大街了,就从网上找了两个看起来还行的其他项目,一个是sylar的协程库,另一个是cpp实现的raft kvdb ,就开始做了,也是主打一个学习。这期间一边做一边了解了linux网络编程,cmake和gdb相关的东西,然后大概搞了一个多月,中间腾讯来学校宣讲,但是因为项目没做完,就没敢去
此时4月中了,感觉再不投都快结束了,匆匆忙忙投出简历,投了七八家,主要集中在深圳,但是都没任何反应,这时候看到牛客上普遍都在说cpp岗位很少,都在劝润,心情有点烦躁,浑浑噩噩了半个月
直到五一假期完还是没有反应,这时就重投了一下腾讯,投的是csig的后端方向,因为自己一直在用腾讯云的服务,就比较想去云。又等了几天,11号的时候突然收到了面试通知,是teg的云架构基础部,非常认真地准备了两天,然后13号一面。
因为是cpp方向的第一次面试,非常紧张,害怕他会让现场手写内存池线程池这种的,或者考很难的算法,但是面试的过程中发现他其实问了很多基础,然后项目的话准备尚可,答的也比较流利,算法也比较常规,是个链表,最后问了业务,是腾讯云这边的,部门比较多,主要做底层,最后听面试官说有一些ai相关的,因为自己有了解一些cuda的东西,就问有没有这方面的业务,面试官说有一些(这是个伏笔)。
面完后感觉比较稳,果然当天晚上一面通过,此时腾讯音乐打来电话约第二天一面。

14号腾讯音乐一面,上来就三道题,都比较简单,写完后跟面试官说了思路,然后在指引下做了一些bugfix和优化。后面就是八股拷打,印象很深的一个是问库函数和系统调用,这个问题因为不熟悉然后拉扯了很久,自己也有点搞晕了还有就是问大端小端怎么判断的,这个一时半会没想到指针和union。但因为项目和其他八股答的还行,就还是给过了。

15号腾讯二面,面试官起手就问机器学习课学了什么,有没有实际的落地项目,我说主要是介绍性质的,有一些lab但没有大的落地项目。后面开始问协程库,答的还行,紧接着,大的来了,他突然开始问cuda
这下措手不及了,我就跟他说正在学习,不是很熟练,但是他还是问了一些跟核函数调用参数,cuda优化,gpu为什么快有关的东西,也还行(幸好没深入问)。晚上的时候显示二面通过。

然后当天下午5点,腾讯音乐突然来电话说晚上电话面试,紧张的饭也没吃,赶快刷了点题。7点,面试官准时来电话,上来就是大数据基础拷打(可能因为项目写的raft),比如什么1亿个数找前1000,1亿个数找出现两次的全部数,海量用户信息里找一条符合要求的记录,因为完全没看这些问题,答的磕磕巴巴,然后经历了一个小时的折磨。后面面试官就开始问cpp基础,这部分答的很好,最后面试官说你前面答的我不满意,但是后面答的不错,还是会让我过,他真的,我哭死。反问环节面试官说是做酷狗搜索引擎的,这里感觉其实不太匹配。


第二天腾讯三面,面试官上来就cuda,问cuda优化技巧,gpu为什么比cpu快,问的非常深,一直到了系统架构,问cpu组成部分,分支预测,控制结构等等。问矩阵乘法怎么优化,只答了分块和共享内存。后面问课程,说了云计算,然后就开始问容器怎么实现隔离的,只记得cgroup和命名空间了,但命名空间是干什么的都忘记了,后面在面试官提醒下答了文件系统隔离。最后面试官评价我懂一些原理,但是不够纯熟,然后讲了一些道理,大致就是用什么语言用什么技巧,其实没那么重要,关键是要懂原理,即使什么语言都不会,也能快速的找到错误在哪里,听的我醍醐灌顶,也深深感觉到自己的差距。反问环节面试官说他们组做serveless架构的,有一些cuda加速的需求,希望这方面比较熟练的。我一听心里有点凉,下去散步去了,但没想到一看居然通过了

腾讯音乐三面约到了20号,但是腾讯一直没给hr面,一直等到25号。这期间面了tme三面,三面问了一些基础问题和智力题,感觉答的还行,但是没后续了。另外就是字节的风控,部门用的golang,所以一直问我八股和项目,加上做题,相对来说比腾讯问的常规,因此就不细说了。
25号发现tme挂了,外加腾讯流程回到测评,突然感觉有点崩溃,但好在字节还在流程中,还是得打起精神继续面。

结果某天上午阿里云打来电话直接当场面试,七七八八问了好多,最后还做了套题,加起来大概100分钟,面试官说是做智能网卡的,还有cpu架构,高性能计算,还发了一些paper,我一听,这也太高级了,我不配我不配,就默认阿里挂了。
紧接着腾讯突然给我捞起来了,当晚一面,面试官说他们是上次那个组的隔壁组,之前看面了好几面了,就随便问了个os内存分配,然后做了个层序遍历的题就完了。10分钟后直接通过。
第二天下午字节三面,感觉答的一般,尤其最后给了三道题我以为他是觉得不匹配要挂了,结果过了一会儿约hr面了,感觉很激动,终于有个hr面了
晚上腾讯二面,这次面试官说前面面评都很好,技术问题他就不问了,问我对部门有什么疑问,跟他聊了挺久,他说回去等hr通知,感觉稳了?

第二天终于约hr面了,心里一块大石头感觉放下了。然后就是字节和腾讯的hr面,很常规没啥好说的,之后字节先oc,腾讯以为流程较慢还在评估中,就拿字节的offer催了催,也很快oc了。
最终考虑个人偏好和技术栈,还是选了腾讯,这个组是做cdn和网络加速的,二面面试官说如果隔壁组(有cuda的那个组)做大的话,我还是有机会去的,这个平台整体都不错,感觉个人也很满意。

番外是阿里云打电话二面,面试官说一面表现很好,笔试成绩也很好,直接不问技术问题了,然后问我愿意在哪里工作,我说深圳,他说可以,他们正好在深圳,问我愿不愿意去,这时候腾讯还没oc,就先说愿意了。腾讯oc后就和阿里的hr联系结束了流程,因为确实很想去🐧,并且感觉自己系统架构这块不是很行

唉,感觉这几个月心情就是一直在过山车,虽然有了个相对较好的结果,但是个人感觉运气成分还是占比大,毕竟看到牛客上那么多大佬面试问的很难,感觉自己的面试确实有点顺利了
不过,感觉人最终还是要相信自己,脚踏实地不断努力,越努力越幸运 也希望看到这篇文章的小伙伴们能早日收获理想的offer!#实习工作,你找得还顺利吗?##投递实习岗位前的准备##第一次面试#
全部评论
我也是今天二面字节,一塌糊涂,但是下午过了,明天三面。未来两天还要车轮战三家大厂,心态又累又气馁,借您吉言吧
2 回复 分享
发布于 06-12 20:08 广东
牛的老哥
点赞 回复 分享
发布于 06-06 16:57 北京
佬,我很好奇你提到了cuda,因为我现在在学的课就是并行计算(MPI还有openMP)还有GPU开发(各种迭代还有梯度法在cuda上的应用)。但是我其实并不明白这些课程未来是为什么岗位服务的。我看了算法岗,但是好多要求的机器学习和深度学习框架,我目前正在学机器学习的课,但是还是很迷茫,并不能理解我手头学的这些东西该怎么为未来的岗位匹配,求解答
点赞 回复 分享
发布于 06-07 05:42 德国
请问老哥学习C++的路线是什么样的,想转hpc,能给点意见吗
点赞 回复 分享
发布于 06-10 21:31 江苏
@失败总是贯穿我的一生
点赞 回复 分享
发布于 06-11 15:17 浙江
想问下佬如何学习gpu编程,有什么课可以推荐吗?谢谢
点赞 回复 分享
发布于 06-18 16:53 美国
佬是什么bg,本科还是硕士
点赞 回复 分享
发布于 08-02 16:59 上海
大佬 请问项目raft kvdb的
点赞 回复 分享
发布于 11-20 14:35 广西

相关推荐

Webpack通过解析入口文件及其所依赖的其他模块,构建一个完整的依赖图,从而理清模块之间的依赖关系。具体的处理方式包括以下几个方面:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=ba06d8fbb87f45f7bf340c85dc4f0cc1模块解析:Webpack会根据配置的解析规则,解析模块的路径和文件类型。默认情况下,Webpack会按照特定的路径搜索规则来查找模块,可以通过配置文件指定更多的解析选项。Webpack支持解析各种类型的文件,如JavaScript、CSS、图片等,以及一些特殊的模块类型,如命名的 AMD 或 CommonJS 模块。加载器处理:Webpack在解析模块时,会根据模块的类型,使用相应的加载器来对模块进行预处理。加载器可以将模块进行编译、转译、压缩等操作。加载器可以串联使用,以处理多个模块,形成一个处理管道。其中,每个加载器负责对模块进行特定的处理,然后将处理结果传递给下一个加载器,直至最终的模块打包。依赖收集:在解析模块的过程中,Webpack会分析模块之间的依赖关系,并将这些依赖关系记录在依赖图中。通过静态分析的方式,Webpack可以在编译时就知道每个模块所依赖的其他模块,以及被哪些模块所引用。模块打包:依赖图中的模块经过加载器处理后,Webpack将根据配置使用优化策略来打包模块。例如,可以将多个模块的公共代码抽取出来,形成单独的代码块,以减少重复的代码。还可以进行代码分割,将不同功能或路由的代码分割成多个文件,以实现按需加载。通过以上的处理方式,Webpack能够准确地处理模块之间的依赖关系,构建出一个完整的依赖图,并最终将模块打包成一个或多个静态文件。这样,在浏览器中加载这些文件时,模块的依赖关系也会得到正确的处理。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
19 39 评论
分享
牛客网
牛客企业服务