秋招总结 | 非科班菜鸡大厂艰难求职之路

一、写在前面

  • 求点赞、评论、收藏!
  • 秋招大致从6月中旬到9月下旬,主要还是集中到八月底(实习结束),TP,vivo等提前批开放的很早,抱着试一试的想法,没想到顺利通过了,还拿到了不错的评级和薪资。后来因为拿到了鹅厂的转正offer,所以后续只针对性地投了几家,开始全部冲的成都岗位,结果因为投的比较晚,京东、字节、百度甚至没有面试机会(大家也慎重考虑,感觉成都卷的一比)。岗位基本全部是后台开发,九月份返校之后很多没有做记录,这里凭借记忆做一下简单的介绍,如果对大家有帮助的话,务必<stron>,给俺加加热度,感谢~。</stron>

截止到10.20面试情况

  • 已意向:腾讯(小sp)、阿里(yyds)、美团(小sp)、字节(yyds)、TP-LINK(yyds-2)、vivo(sp)
  • 无消息:商汤、华为

10.20更新 字节、米哈游面经




二、秋招情况

1. TP-Link(成都已意向)


2. vivo(深圳已意向)


3. 商汤科技-SCG(成都HR面完等结果)


4. 腾讯-TEG(深圳已意向)

  • 实习转正,感谢鹅给我带来的成长。没有腾讯就没有秋招的我,这里也感谢年初不曾放弃的自己。

5. 阿里-阿里云(杭州已意向,已签三方)

  • 简历评估面:基本是针对简历上的点一个一个问,穿插八股

    1. 系统调用:本质是过程调用,调用方和被调用方处在不同的状态下(用户态和内核态),系统调用返回后可能不会直接到对应的函数栈,也可能会执行调度

    2. 内存泄漏:编码习惯、智能指针的使用、内存泄漏发生的检测工具(valgrind)、堆栈信息

    3. 代码量,如何统计:用正则表达式、VS自带

    4. git行数信息:git --nums

    5. python协程:省去了线程切换

    6. python为什么用多进程而不用多线程:数据安全角度引入了GIL,全局解释器锁;由于GIL存在,一个进程只能执行一个线程,因此多线程(计算密集型,获取锁释放锁)效率并不高;对于IO型任务我们可以通过线程调度来让线程在执行IO任务时让出GIL

    7. MySQL中drop、truncate、delete区别:delete删除一行,记录在日志;truncate清空表数据,不记录日志(只记录释放)不能恢复,没有激活触发器,执行速度快(表和索引会恢复到原始大小、索引还在);drop删除数据和表结构(全部释放)

    8. 三大范式

  • 一面:主要问了项目、智力题、补充做算法题

    1. 介绍项目,围绕项目说了很多

    2. python相关的内容

    3. cpp四种强制转换

    4. 智力题:3点15分时钟和分钟的夹角、赛马问题

    5. 算法:具体题目记不清了,一道easy、一道medium、一道数据库设计题

  • boss面:技术内容不多

    1. 项目经历

    2. 转码历程、学习经过

    3. 进程线程区别:task_strcut、数据结构、clone参数、使用场景和注意事项

    4. 智能指针:shared_ptr unique_ptr weak_ptr, 使用场景、数据结构、线程安全等方面

    5. 多态:静态多态、动态多态、虚表、虚指针

    6. boss介绍业务

  • HR面:常规问题


6. 美团-基础研发(成都已意向)

  • 这里有点记不太清了T_T,记录一下影响深刻的吧

  • 北京一面

    1. OS中信号实现的机制:软中断、信号表、kill命令

    2. 大量的TIME_WAIT的消耗了什么资源:文件描述符?这里不太确定

    3. 项目设计中的心跳机制:这里是项目本身的问题,和面试官探讨了如何解决

    4. 得知是北京岗位,申请调了一下岗位重新面试。。。

  • 成都一面

    1. 项目

    2. 常规八股:线程进程,RC、RR下加锁的区别,多路复用

    3. 字符串的全排列(回溯)

  • 成都二面

    1. 项目问了很久

    2. 介绍业务

  • HR面:常规问题


7. 华为-CBG(深圳、主管面完等结果)

  • 一面:

    1. 项目,和面试官聊了很多可以优化的点

    2. SSL握手、数字证书

    3. 有效括号(dfs):给定n,输出所有合法括号序列

    4. 面试官介绍业务

  • 二面

    1. 项目

    2. 合并字符串(并查集):给定字符串数组,任意串中的字符重复出现过则合并,返回不能合并的数量

  • 主管面

    1. 项目

    2. 主管介绍业务(HMS、PUSH)

    3. 工作地考虑

    4. 薪资


8. 字节-抖音电商(上海,已意向)

  • 一面 10.09

    算法1:寻找有序数组中给定数字的上下界,不存在返回-1

    1. 一次二分找下届 + 遍历找上界,时间复杂度

    2. 两次二分,类似实现lower_bound和upper_bound, 时间复杂度

    3. 实现2

      算法2:二叉树的层序遍历

    4. 队列和栈的区别

    5. 遍历奇数层

    6. 遍历斐波那契层

    7. 斐波那契递归过多会有什么问题,如何解决

    8. 写一下优化的算法

  • 二面 10.11

    1. https

    2. 四次握手

    3. 对称加密和非对称加密

    4. 浏览器什么时候用私钥

    5. 虚拟内存概念和优势

    6. 主键索引和普通索引区别

    7. 为什么先要到主键上

    8. 算法题:类似岛屿数量,增加了相同数量岛屿合并、并求出最大岛屿面积的操作

  • 三面 10.15

    1. 虚函数

    2. 构造函数和析构函数可以是虚函数吗

    3. 构造函数和析构函数中调用虚函数

    4. 虚拟内存

    5. 抛硬币概率问题

    6. 算法:拓扑排序


9. 米哈游-服务端开发(上海,二面挂)

  • 一面 10.8

    1. 快速排序时间复杂度,最坏情况

    2. 快速排序口述一下

    3. 快速排序是稳定的吗

    4. 数组中存在大量相同的数,快速排序会有什么问题吗

    5. C++智能指针

    6. shared_ptr是线程安全的吗

    7. weak_ptr如何让访问资源

    8. 多态

    9. 虚函数

    10. 纯虚函数

    11. 多个虚函数,虚指针如何正确访问

    12. static和dynamic_cast区别

    13. dynamic_cast可以转换不含虚函数的父子类吗

    14. 读取数据的过程

    15. 僵尸进程及其解决方案

    16. 孤儿进程及其解决方案

    17. Linux CPU占用过高如何定位

    18. TCP保证可靠的一些机制

    19. 重传机制

    20. 拥塞控制控制的是什么

    21. 拥塞窗口和收发窗口的关系

    22. Nagle算法及其问题和解决方式

    23. 反问

  • 二面 10.13

    1. 算法1 实现atoi

    2. 算法2 top k

    3. C++智能指针

    4. weak_ptr怎么实现lock

    5. unique_ptr怎么实现资源独享

    6. io复用

    7. ET模式下读缓冲区满了怎么办

    8. 引出reactor模式

    9. 引出消息队列

    10. 反问:游戏服务器和服务器的区别、建议

//实现atoi
class Solution {
public:
    int atoi(const char *str) {
        int n = strlen(str);
        long long res = 0;
        int flag = 1;
        int i = 0;
        while (str[i] == ' ')
            i++;
        if (str[i] == '+')
            i++;
        else if (str[i] == '-') {
            i++;
            flag = -1;
        }
        while (i < n) {
            if (str[i] > '9' || str[i] < '0') {
                return flag * res;
            } 
            else {
                int temp = str[i] - '0';
                if (flag == 1 && 10 * res + temp > INT_MAX)
                    return INT_MAX;
                if (flag == -1 && flag * (10 * res + temp) < INT_MIN)
                    return INT_MIN;
                res = 10 * res + temp;
            }
            i++;
        }
        return flag * res;
    }
};
//topK问题
class Solution {
public:
    int findKth(vector<int> a, int n, int K) {
        // write code here
        int l = 0, r = n - 1;
        int index = partition(a, l, r);
        int target = n - K;
        while (true) {
            if (index == target) {
                return a[index];
            } else if (index > target) {
                index = partition(a, l, index - 1);
            } else 
                index = partition(a, index + 1, r);
        }
        return -1;
    } 
    int partition(vector<int>& nums, int l, int r) {
        int i = l, j = r;
        int temp = nums[l];
        while (i < j) {
            while (i < j && nums[j] >= temp)
                j--;
            while (i < j && nums[i] <= temp)
                i++;
            if (i < j)
                swap(nums[i], nums[j]);
        }
        swap(nums[i], nums[l]);
        return i;
    }
};

10. 其他

  • 其实在八月多的时候也陆续投过一些其他公司,后来因为拿到了一些意向,所以很多面试都拒绝了。

11. 总结:面试项目问的居多,涉及分布式、高并发的场景是面试官爱考察的点。八股文还是以前那些吧,个人觉得能够结合更底层的方式去说,会让面试官更满意。剩下的就是等消息,已经面不动了。

更新一下:近期收到了上海米哈游和字节节后面试的通知,然而已经耍了一个月。。。属实是面累了,不会整了,祝大家国庆愉快。





三、经验分享

  • 楼主背景:22届985材料本硕,2020年9月开始正式接触C++,课题组的事情非常多(项目申报、专利、材料撰写这些,硕士狗懂得都懂)自主学习的时间特别少,一路磕磕绊绊也算是有所收获。在这里也简单分享一下学习历程。

1. 语言基础

  • 这一块基本是看书 + coding,学习语言基本是在项目(科研项目)中慢慢摸索,后续慢慢看完了 C++Primer, 中间穿插了数据结构和算法的学习,对我而言,快速上手使用C++的一些东西让我觉得成就感满满 。
  • 书籍:C++ Primer、Effective C++、深度探索C++对象模型、STL源码剖析(惭愧、后两本基本没看)。

2. 数据结构和算法

  • 书籍:大话数据结构,这里说一下只看这一本是完全不够的,也是我现在算法薄弱的原因,个人觉得时间充裕的话,还是找一些更深的系统性学习一下
  • 刷题:主要是在leetcode中文站,陆陆续续刷了400左右吧。 我的顺序 按tag刷一部分(看大佬们的总结穿插针对性学习)、剑指offer、codetop (这里因为我缺少系统学习,刷了不少题但是感觉算法依旧很薄弱,大家引以为戒)
  • 视频:资源很多不做多说
  • 关于算法的总结网上有很多很多的相关资料,我整理了一下面试中遇到的一些数据结构设计的代码code,欢迎勘误

3. 计算机网络

  • 书籍:计算机网络(谢希仁老师版本的,简单轻薄hh)、UNIX网络编程(看了一点点)、图解HTTP(第一本书里面这里讲的比较少)

  • 视频:bilibili(【up:方方方已经存在了】),教材刚好是谢希仁老师的,算是我的计网启蒙课

  • 博客、公众号:小林coding的图解网络,再有就是日常的一些积累,包括一些网络新技术

4. 操作系统

  • 书籍:深入理解计算机系统、Linux内核设计与实现(惭愧惭愧又没看完,只看了一点)
  • 视频:清华大学陈渝、哈工大李治军
  • 博客:这里零零散散的很多基本就是靠日常积累了
  • Linux:多练习常用的指令~

5. 数据库

  • 先用起来,基本的CRUD
  • 书籍:高性能MySQL,重点看了5-6章、极客时间MySQL实战45讲
  • 刷题:我只刷了leetcode上面的免费的几题emmm
  • 技术博客,这里基本是零零散散去熟悉和了解,主要是数据结构、日志、隔离级别之类的

6. 项目

  • 项目或者实习经历,会让面试官的提问更有指向性,甚至在很多面试中,我连八股文都没有被问到,全程讨论项目的技术点、改进优化方案,同时自己的项目或者想法也在面试中不断累积和完善,可能是所谓以战养战吧!

  • 课题组项目

  • 开源项目:这里很多大佬们推荐了我就不说了

  • 确保写在简历上的项目点是你很熟悉的、相关领域的技术是有一定了解的。这样和面试官谈起是游刃有余的。并且最好有自己的领悟,能在开放性的场景(面试高频)中结合自己了解的技术做理论分析。

7. 实习

  • 没有这段实习经历,我感觉自己毫无亮点。实习帮我巩固了硬实力,也稳固了心理防线,认识了很多志同道合的伙伴,一路带我学习~

8. 总结

  • 一是扎实的学习、二是不断的探索和主动学习、三是共同战斗。

  • 因为我实际接触编码的时间很短、理解也很浅薄,很多说法并不是适合所有人,很多知识最好是系统性的学习,包括到现在,我依旧认为自己一窍不通,还有无数东西需要学习;关于主动学习,自觉做得还不错,我常常习惯顺着一条线把问题理清楚(当然可能并未清楚,只是达到我心中的预期);另外有一群志同道合的大佬一起并肩作战,压力会小很多、动力会多很多。很多时候累了烦了我就告诉自己,先做五分钟,一切都可以静下来。回想最初的那段时间,工作点在赶项目(编码无关的项目)、写文档,剩下的那么零零散散的时间真的是挤出来学习的。我一直觉得自己是运气很好的人,希望能把好运带给大家。大伙早做决心、早作准备、拿到满意的offer。共勉!




四、写在最后

  • 以上就是我,一个非科班转码一年菜鸡的成长和收获,如果看到这里你有收获的话,烦请评论+点赞+收藏啦,对我很重要hhh~



#我的秋招总结##腾讯##美团##华为##字节跳动##商汤科技##米哈游##阿里云#
全部评论
1 回复
分享
发布于 2021-10-01 02:09
同非科班,向大佬学习
点赞 回复
分享
发布于 2021-09-30 09:50
百信银行
校招火热招聘中
官网直投
楼主准备去哪里呀
点赞 回复
分享
发布于 2021-09-30 16:03
恭喜皮皮熊老哥。当时认识老哥还是腾讯引力计划哈哈,现在强的一批
点赞 回复
分享
发布于 2021-09-30 22:42
大佬太强了!
点赞 回复
分享
发布于 2021-10-09 08:54
同意,实习太重要了,虽然我除了实习转正的offer就没其他offer了
点赞 回复
分享
发布于 2021-10-09 19:09
大佬,请问有实习的经验吗?😂
点赞 回复
分享
发布于 2021-10-11 00:38
大佬太强了
点赞 回复
分享
发布于 2021-10-13 15:38
大佬的课题组项目也和C++有关吗
点赞 回复
分享
发布于 2021-10-20 00:05
🌟掌趣游戏2022校招正式启动🌟 海量精选岗位、超完善成长培养体系、行业大咖云集、全方位强力福利保障… 内推码❗:DSzRSamW 【加入QQ群594123960,即时获取行程安排、岗位信息、问题答疑等】 就等你来啦!👏👏
点赞 回复
分享
发布于 2021-10-20 16:45
向大佬学习😁
点赞 回复
分享
发布于 2021-10-21 21:08
请问华为cbg收到意向了吗?
点赞 回复
分享
发布于 2021-10-21 21:34
大佬也太强了吧
点赞 回复
分享
发布于 2021-11-13 14:47
皮皮熊师兄,学习榜样,膜拜yyds
点赞 回复
分享
发布于 2021-11-13 14:49

相关推荐

62 194 评论
分享
牛客网
牛客企业服务