从网易到字节,专升本的校招经验分享

  • 2022-07-20 上午 / itsuki0927 /
  • 0人浏览 • 0条评论 • 0人喜欢
面试生活
article-header-cover
offer = 做好准备 + 稳住节奏 + 做好复盘 + 保持心态

文章首发于个人博客

如果有小伙伴看过我之前发过的 2021 总结文章, 就知道我当时的一些情况, 去年的这个时候, 我也在准备秋招, 刷着题目、看面经等等, 这篇文章来说一说校招自己的一些心得, 备战秋招, 需要准备简历、算法、专业知识、项目/实习这四个大方面。

以下都是文字, 有点枯燥, 但是有用~

简历

首先是简历的问题, 最好是找朋友、学长学姐看看, 问一问他们有没有修改建议, 或者在掘金上面找关于简历的文章, 进行相对应的修改, 这个我就不细细展开了。
这里推荐几篇掘金的文章, 可以参考一下~

  1. 如何写「前端简历」,能敲开字节跳动的大门?
  2. 看过 100 份前端简历之后,汇总一下常见的问题
  3. [译] 如何写一篇杀手级的软件工程师简历

算法题

刷算法要有目的性, 知道面试、笔试(随缘)中常考哪些对于准备校招很有帮助。 我一开始比较盲目, 所以刷这个刷那个, 浪费了很多时间, 所以在这里推荐几个对我帮助比较大的仓库。

笔试算法题

  1. 李威威大佬
  2. acwing 算法基础课也可以试试(不过需要几十块 💰)

面试算法题

  1. CodeTop 前五页
  2. 剑指 offer
  3. leetcode Top100

笔试算法题, 我比较推荐李威威, 他的 leetcode 题解以及 github 操作对新人比较友好, 面试算法题可以优先刷 CodeTop, 其次就是剑指 offer、leetcode Top100。

别看到以为很多就慌了, 面试算法题这三个里面有很多重复的, 刷完我相信面试的时候 80% 的题都可以做出来(不敢说的太绝对, 怕对打脸, 哈哈哈哈哈)。

刷题

在我刷题的话, 我会先看看有没有思路, 搜索自己脑海中的算法, 看看哪个比较适合, 如果没有思路的话, 先暴力破解看看能不能弄出来, 暴力解法锻炼一个想法到实现的过程以及编码能力, 如果暴力不能弄出来的话, 可以看看题解, 看看别人的思路, 再尝试把它写出来, 我自己是会把一个题目反复刷, 我觉得 y 总有一句话说得很好: “一遍不知道, 刷个五遍, 我就不信你不知道”。

特别是一开始学一个算法的时候, 很容易陷入一看就会、一做就废的情况, 别慌张, 大家也是这么过来, 你需要时间好好成长。

我一般会多看看几个人的题解, 看不同人的答案, 每个人看待问题的角度和解题思路都不一样, 多学一种思路面试、笔试多一份把握(这个真的有用、特别是面试中的算法题)。

如果一直在刷某一系列的题, 可以尝试进行总结, 比如说二分查找, 二分的使用场景, 什么时候用到二分, 这个自己去总结, 下次比如说看到有序的时候, 看到每次都可以排除一半的情况, 能不能想到二分?

合理的背模版, 基础算法(比如说排序)这些最好是自己能够轻车熟路的写出来。

算法准备好了, 别忘了熟悉笔试的环境, 原因有两点:

  1. 我们可能平时用 leetcode 使用的多, 它不需要我们处理输入和输出, 但是笔试中绝大多数是要自己处理输入、输出的, 所以你要搞清楚你所使用语言的输入、输出, 特别是输出, 有时候多个空格啥的, 比较难排查
  2. 刷题的时候不妨使用牛客、leetcode 等网站上的编辑器, 尽量脱离本地 ide(个人建议)。

我问了一些校招的小伙伴, 他们说一般是本地 ide, 但是我自己在笔试以及面试过程中, 有一些情况是网站的 ide, 所以采不采用看个人啦。

我在刷题的时候, 很少借用智能提示、一般都是自己敲, 原因有两个:

  1. 笔试有时候是在某些网站(牛客、赛码)上进行, 如果没有提示的话, 那就直接尬住了, 比如说想使用 Java 的优先队列Prority单词不会写, 知道思路想写也写不出来。
  2. 加深 API 的熟练度、加快自己打字速度(好像没啥用), 面试很多情况都是牛客等网站, 说实话我感觉它们的代码提示不得行, 还不如自己手敲快一点。

平时用 IDEA、vscode 有智能提示舒服得很, 但是网页上的 Ide, 不要对它抱有太高的期望, 有智能提示算是不错的啦, 当然如果笔试的时候允许你在本地 ide 写是最好的。

笔试

在笔试的时候要把握时间, 我一般会先把所有的题目都扫一眼, 看看哪个题目有思路, 然后就做那一道题目(全都不会, 叉出去), 然后分为三种情况:

  1. AC: 能够很快的 AC, 🐮 呀。
  2. 卡思路: 某一道题目一直卡在80%90%的时候, 这种可能是卡边界、输出、超时了, 比如说传一个特殊值(null、’’、在数据范围內特别大的值), 看看哪一步没有做好边界判断, 如果是返回字符串的题目, 要小心有没有多打空格。
  3. 完全不会: 如果实在不知道怎么写, 可以尝试”骗”测试用例, 我称之为(面向测试用例编程), 比如说有一些题目问你返回truefalse, 这种最简单, 你直接返回truefalse就可以过一定的测试用例, 当然企业笔试不会那么傻, 出只有两种可能性的题目, 那不妨试试一些特殊值, 比如说0''字符串这种特殊的样例, 或者说看看能不能把测试用例的答案搞出来, 如果搞出来测试用例的答案, 至少也可以过一些用例, 总比空着好一点。

面试

面试比较看运气和临场发挥能力, 运气好出得那个你就会, 那就美滋滋了, 而面试中的算法, 经过我这么多轮面试的手撕题, 无非就是这几种: 链表、滑动窗口、栈、优先队列、二分、二叉树、回溯、深搜/广搜, 动态规划相对来说比较少, 但是主要是这些, 所以可以刷上面推荐的算法面试资源的题目。

其次面试中我总结了五个要点:

  1. 我一般会掌握至少两种解法, 就拿最简单的两数之和, 有暴力、Map、双指针的方式, 面试的时候看到我用暴力的解法写出来了, 面试官可能要求进行优化、或者换一种思路来实现, 如果优化、换一种思路也能够写出来了就是一个加分项。
  2. 我基本上都会使用本地 ide 进行 debug, 了解每一行做了什么, 为什么要这么写, 这个很重要, 在面试过程中有很多面试官会在你写完之后会要你解释一下, 然后还会问时间、空间复杂度以及思路是什么。
  3. 在面对没有思路的题目时, 可以问一下面试官可以提示一下吗? 先把思路理清楚再去写, 你写代码的过程面试官都能看到, 如果你总是删了改、 改了删的话, 会给面试官一种想到哪里写到哪里, 没有整体的把握, 即兴 freestyle? (我就是这么过来的, 导致有一些面评就是想到哪里写到哪里, 没有整理把握, 扎心了。)
  4. 如果代码有一点点问题, 别慌, 这个时候就是考验的是 debug 能力, 我一般都会准备好笔和纸在旁边, 然后自己在草稿本上把流程走一遍, 看看哪里有问题然后再做相对应的修改。

专业知识

接下来就是专业方面知识的准备了, 我当时是边刷算法边准备专业方面的知识, 比如说一天上午写算法题, 下午看面经啥的。

最快速的路

我个人觉得比较好准备秋招的方式就是: 看牛客网上的面经, 不懂的地方去搜索, 根据自己的查到资料, 用自己的话总结出一个答案出来, 不是直接复制别人的!

总结出一个答案也可以理解成: 用自己的语言描述出一个问题的答案。

为什么我要这么说呢? 现在去网上搜面试题一大堆, 他们都会告诉你答案, 然后把这个答案强行灌输给你, 这个就是问题的答案, 你就答这个就可以了, 但是你自己不去实践, 自己不去动手你可能都不知道, 有些答案是错的, 或者说答得并不全。

所以在准备的时候, 别偷懒, 一个问题自己去搜索然后实践总结出自己的答案, 我相信这种方式并不会比你直接背答案慢!

八股文除外(为什么会有八股文这种东西!)

题外话: 当时和小伙伴调侃, 牛客怎么面经还没更新, 哈哈哈哈哈。

多说

在准备的面试过程中, 面经就是面试官, 你就是面试人, 自己在心里进行解释, 解释的清楚说明你懂了, 解释不清楚就说明不懂, 一定要去找出自己的答案。 千万不要有一种错觉, 这个我知道、可以跳过, 我之前也有这种错觉, 以为自己知道就真的知道了, 但是自己知道和面试官说清楚是两码事, 能够用简单清晰的语言跟面试说清楚才是真正的理解, 我之前春招就是以为自己知道就是真的知道了, 然后春招的时候说的支支吾吾, 表达也不清楚。

多写

前端会出现实现一个 xxx 这样子的手撕题, 这种题目很考验代码功底, 在你写的时候, 面试官能够变量命名、api 的使用、函数是否封装等各个方面对你有一个整体的了解。 我的建议是多写代码, 去看别人的代码, 看他们写代码的风格、思路以及命名, 有什么地方可以借鉴的。

最简单的一个例子: 实现一个数组去重、排序、扁平。

var arr = [
  [12, 2, 2],
  [6, 7, 8, 5],
  [3, 4, 5, 9, [11, 12, [1, 13, [14]]]],
];
fn(arr); // 去重 + 扁平 + 排序

我们可能就直接一把嗦了, 但是这样子写的话, 不利于代码复用的, 我们尽可能的保证一个函数只做一件事情, 所以我们不妨将这个拆成三个函数, 然后再利用一个辅助函数让它依次执行。

// 去重
const unique = (arr) => [...new Set(arr)];

// 扁平
const flatten = (arr) =>
  arr.reduce((acc, v) => acc.concat(Array.isArray(v) ? flatten(v) : v), []);

// 排序
const sort = (arr) => arr.slice().sort((a, b) => a - b);

// 管道函数
const pipe = (...fns) =>
  fns.reduce(
    (f, g) =>
      (...args) =>
        g(f(...args))
  );

pipe(flatten, unique, sort)(arr);

项目和实习

项目

有多少小伙伴和我一样, 写到一半或者写完了就不管了, 把它放在那里, 然后写简历的时候就尴尬了, 心比较虚, 不知道自己做了啥, 也不知道怎么做的, 所以我的简历在春招的时候项目一直都是一个博客(19 年写的)以及 xxx 管理系统。

到秋招的时候, 我觉得这样子不行, 然后用自己喜欢的技术重构了前端并且一直在迭代更新, 做完之后我发现一个完整的产品, 能够不断的去迭代开发, 它要比你做一半、做完了不管的项目强太多了, 因为一个完整的产品你会参与到技术选型、UI 设计、后端接口开发(数据库设计)、前端开发、开发维护、可能的话自己搭建 ci/cd, 这些东西都是自己去尝试的, 特别是优化某一个变量名、优化某一个方法、解决某一个 bug、进行一些点的性能优化的时候这些都是你可以面试中展示的点, 因为它是你一直迭代的项目, 所以你也会非常熟悉, 如果要你讲项目难点, 你也可以娓娓道来。

实习

如果在一家公司实习的话, 面试官还会问关于实习的东西, 最容易问的问题是实习做了什么, 为什么要做这个, 做这个碰到了什么问题, 有了解做这个的背景嘛? 所以在准备的时候以”为什么、做什么、怎么做”的来进行准备, 好好的了解下当前业务的背景以及一些难点。

小结

总结就是: 扬长避短、禁止埋坑。

  1. 面试官对你的了解, 就是通过简历, 所以他肯定会问简历上的东西, 每一个知识点都要搞明白, 别想着为了简历光鲜亮丽, 啥都写上去, 到时候面试有你难受的,别给自己埋坑。
  2. 面试中的时候, 如果碰到不会的问题直接说不会, 面试官不会因为这一个问题否定掉这一整场面试。
  3. 面试中问你实习内容, 自己在准备的时候最好去总结好你当时实习做了什么, 为什么要这么做, 实习中碰到的难点, 这个是比较重要的(项目也是如此)。

反问环节

最后一般都有反问环节, 我个人一般问一下四点:

  1. 问下这种面试感觉怎么样, 然后有什么需要提升的点
  2. 问问刚刚面试中不会的东西
  3. 问问专业的方向
  4. 公司的做什么、技术栈、新人培养方案

这个可以参考一下别人是怎么问的。

一些小问题

心态

不管自己面试发挥的怎么样, 一定要摆正心态, 如果发挥的好, 给自己积极的心理暗示, 好好准备是有回报的, 如果发挥的没有达到自己的要求, 那就好好复盘, 把不会的地方搞明白, 谁都会有不清楚、不明白的知识点, 允许自己犯错, 切记不要有”一场面试不行, 就否定自己”, 我之前就是这样子, 面试的不好就心情比较低落, 然后影响自己的复习节奏, 现在感觉有点不太值得。

学历

xxx 公司这么厉害, 我技术不好、学历不好, 进得去嘛, 不要慌, 光脚不怕穿鞋的, 先投了再说, 万一进去了呢, 谁也说不定呢。 学历不好可以试试找一个实习攒经验, 或者在 github 上尝试开源的东西, 总之就是拿得出可以体现你技术水平的东西(学校、实习、开源等方式)。

专升本

一般专升本的同学, 简历上只需要写本科时间就好了, 如果中间有面试官问起来学校时间两年再说自己专升本, 如果面试到了 hr 面, 最好说一下自己的专升本学历, 担心有些公司不知道你是专升本发了 offer 给你, 然后入职了再说自己专升本可能会毁 offer, 一般 hr 面过了就说明公司是收专升本的, 就不需要慌了。

我该什么时候投

去年我是在 7 月份开始投的, 那个时候提前批刚开始, 投了字节、百度、网易等公司, 我觉得能早点投就早点投, 那个时候提前批的字节进到 hr 面, 网易雷火、百度拿到了 offer, 还是挺不错的, 所以有提前批啥的可以先试试, 相当于多一次锻炼自己的机会。

很多同学可能想着是还没学完, 会被吊打啥的, 不敢投, 不要怕, 你可以先投一些公司, 涨涨经验, 再去冲大公司, 毕竟真正的面试和自己准备是不一样的, 以面试来检验复习成果, 用复习来准备面试, 相互促进, 良性循环。

脉脉和牛客的帖子

我当时复习的时候基本上是看牛客的面经啥的, 没有刷脉脉啥的, 因为看别人的帖子可能会焦虑啥的, 影响到我自己的复习节奏, 所以我基本上是不刷脉脉和牛客帖子, (这个看个人吧, 可以选择看看这篇牛客的 文章 , 说的挺真实的)。

写在最后

最后做一个小总结, 以上的内容:

  1. 做好准备
  2. 稳住节奏
  3. 做好复盘
  4. 保持心态
  5. 拿到 offer!!!

很高兴你能够看到这里, 希望我的一点校招心得能够对你有所帮助。 最后每一个努力的人都值得一个 offer

如果有时间不妨看看这两篇:

  1. 从专升本到互联网大厂-我的 2021
  2. 一个五年专升本的自救记录
最后更新: 2022-08-10 上午
永久地址: https://itsuki.cn/article/177
上一篇

Git学习笔记整理

下一篇