引文

本文会介绍一个二本学历一般公司小小开发如何三年迈进字节跳动大门,次要讲的是办法、思维模式、认知降级、学习、技巧,对每个人都实用,对非技术岗位的打工人也通用。

介绍

单刀直入,笔者在往年3月份胜利拿到了字节前端offer,然而我的经验很平庸,来自一个普普通通的二本,并且在中小公司混迹了三年,还换了3家公司,有1家是被pua每天朝8晚11上6天,有1家还是被解雇的,因为一周要做50个页面就和PM撕逼就差打起来,能够说这种经验想进大厂真的是天方夜谭。你要是方才很同意这种想法,我感觉能够缓缓转换下思维模式了,我强烈推荐看看这段谈话,人生的剧本90%都不是咱们本人抉择的,包含出身、境遇、导师等都没法本人抉择,咱们要做的就是致力表演好本人的角色;如果二本学历刚毕业就想着进大厂,往往会因为指标太高步子太大而扯到,咱们要搞清楚大厂须要什么样的人,本人间隔这样的人还有哪些差距,而后制订指标和学习打算一点点致力,找一些胜利的大厂经验文章,去模拟去好高鹜远做,比方参考本篇文章笔者进大厂的实在历程。

面试四因素

简历

一份好的简历能让你跳出学历的枷锁,大厂HR一天要筛选几百份简历,精炼简洁肯定是首要,构造排序也是很重要,重要的内容往上放,有以下几个方面能够改良:

  • 构造

    • 介绍:尽量裸露要害信息,比方会的技术栈、带过团队、集体学习办法、我的项目亮点难点
    • 工作经验:清晰明确的写出工作干过的事件,承当的角色、集体奉献挑些有挑战的牛逼的写上
    • 我的项目经验:次要是介绍分明做了什么,负责了什么角色,写出我的项目的难点和怎么解决的,我的项目亮点,怎么实现的,原理是什么
    • 集体技能:从理解、相熟、把握/精通三个维度写,理解的倡议不写,被问到反而减分,把握的肯定是会原理,有本人的认知
    • 加分项介绍:社区文章、gitlab、博客,不肯定全写,挑有内容有深度的写一两个就行
    • 获奖作品:不是国家级的倡议不写
  • 语言组织

    用专业名词保持一致,每个构造下的内容构造都要清晰,比方我的项目经验上面都能够再分成我的项目角色、我的项目概述、我的项目亮点/难点、集体奉献四个维度,语言要简略通顺有逻辑

  • 排版款式

    黑白简历和黑白简历,有照片和没照片,这些细节往往会决定面试官对你的第一印象,至多阐明黑白有照片排版好的同学是比其他人更加认真、仔细、器重面试

根底功底

文治学的再好,根底不扎实,真正上场打的时候就没法灵活应变(参考马老师被one punch)。街霸5不晓得大家有没有玩过,一个角色的连招技能表往往有好几页,然而真正能使用好要害的技能,能打出挫伤最高的组合的人,肯定是对这些技能都烂熟于心,并且有了本人的思考,练就出官网都意想不到的精彩Combo。比方面试官要问你一个知识点,你如果有本人的思考,就会从知识点的根底概念、使用场景、实现原理、长处毛病、相干常识等方面来答复,这就是有本人的思考,这种人必然是面试官很观赏的人。试想歌手如果一味模拟他人,但没有本人特有的唱法,没有作词作曲的能力,没有一套本人的体系,那就没方法在挑剔的人群中火那么多年,顶多只能火一两年(除非有脑残粉)。

举个经典面试题例子,说一下继承

  • 根底普通级:会说出继承的概念,原型继承、经典继承、组合继承、寄生组合式继承、es5继承的其中一种是如何实现,和背题没啥区别
  • 有本人认知级:先说原型继承如何实现,并说出这种继承的问题是援用类型的属性被所有实例共享和在创立 Child 的实例时不能向Parent传参,而后说下借用构造函数(经典继承),他解决了原型继承的两个问题,然而又有新的问题是办法都在构造函数中定义,每次创立实例都会创立一遍办法,那能解决这个问题的天然是组合继承,那组合式继承就没有毛病了吗?当然是还能优化!组合继承最大的毛病是会调用两次父构造函数,如何解决呢,把寄生组合式继承搬出来说明确吧,这样有体系的常识认知是十分重要的,不仅能增强本人对知识点的把握,还能面试场上一骑绝尘,一听就晓得你很NB!

我的项目

你做的我的项目NB,那不重要,我的项目因为你而NB,那才是真的NB
跟根底一样重要的就是你的我的项目,对于做过的我的项目,至多要形容进去以下几个点
  • 1.我的项目简介

    • 一段清晰的形容:让面试官理解是干嘛的,做了什么业务,用户群体是谁,你对产品有多理解
    • 应用的技术栈:晓得你纯熟什么,好用人所长
  • 2.负责角色

    • 至多写一个我的项目中的角色:如主开发,参加开发,次要负责人,架构师
  • 3.我的项目难点

    • 知难而能改良:做一个我的项目下来肯定会遇到难点,可能好好复盘我的项目的人,肯定晓得难点在哪,如何解决的,有没有更优的解计划,遇到的阻塞点,如何协调之类的
  • 4.我的项目亮点

    • 加分加分加分:把用到的最牛的技术,改良他人的源码,和同类型的我的项目的劣势等全写上,不肯定是本人做的,但肯定要相熟怎么做的

闪光点

开源奉献、社区文章、上线的我的项目、酷炫的集体网站等等都搬出来,筹备好几个最NB的来讲,最好把要讲的写下来好好组织下语言多训练下,兵士上战场,还得真枪实弹演习下。还有还有!!什么学生会长、组这社团活动、志愿者这些我见一个砍一个,面试官是你的男朋友吗,这么关怀你的大学生存?->_-

我是如何筹备的

制订指标布局

早在一年前就定好了要去大厂的指标,过后还不大清楚大厂须要什么样的人,一个扭转的契机是接触到前端早早聊公布的文章《你为什么迟迟进不去大厂》,总结来说,就是不要因为本身学历、非科班、转岗等因素不可一世,你要做的是用90%的致力来填补这90%的缺点,比方晋升你的社区影响力,公布/参加热门开源作品,为公司我的项目做到极致的优化、增强团队治理能力等等。于是便拨云见雾,充满信心去一步一步布局如何进大厂,别离从优化简历夯实面试知识点训练手写代码晋升代码能力积极参与团队分享(训练语言组织能力和沟通力)、踊跃承当有挑战的我的项目晋升综合能力(SPA转微前端)、优化团队我的项目(微前端)、放弃浏览技术文章晋升认知和常识广度(每天刷掘金首页)、积极参与开源我的项目改良(参加了开源微前端我的项目 qiankun的代码奉献)、公布技术文章晋升影响力和写作能力(公布了分析qiankun外围原理等文章)这些方面来一点点晋升本人。

根底知识点

脑图梳理

用脑图梳理芜杂的知识点,不仅有助于记忆,还疾速定位要找的常识跳转链接文章,用蜘蛛匍匐的形式把每个知识点延展开来,这和谷歌搜索引擎算法一模一样,你甚至能在脑子里存储这张知识点图谱,因为这耳濡目染地用到了联想和关键词记忆法,通过设置优先级和完成度,来增强关键点的印象,而再试想你小时候印象最深的事件,是不是都有一个“动人”的场景,而这个场景就是你联想到的一段段印象粗浅的记忆画面的拼接,同样,脑图里的知识点也能以画面的模式出现在脑海,你甚至能够把脑子当成一个画廊宫殿,给每个宫殿一个房间来放一个知识点以及和他相干的常识图谱。

建设本人的知识点文库

把一些知识点用问答的模式整顿进去,多组织语言多改进构造,改到最好的版本而后梳理和记忆,这样不仅能帮你梳理知识结构,也能模仿面试场景,本人做本人的面试官,试着本人问本人这些问题,看是否给出称心答案,我发一个整顿的知识库地址能够参考(留神不会的没有答案,有善于和不善于的很失常,重要的是把善于的货色做到极致,如果面试问到不善于的,能够间接说不会,不要不懂装懂,坦诚不装

我的前端问答知识库

代码手写

列了常见的手写代码,目标都不是看你会不会写,而是看你怎么写的NB,比方节流和防抖,个别人就间接写一个闭包完事,然而真正NB的,是写出上面这种神仙代码(能秒懂的也是仙人)

function throttle(func, wait, options) {    var timeout, context, args, result;    var previous = 0;    if (!options) options = {};    var later = function() {        previous = options.leading === false ? 0 : new Date().getTime();        timeout = null;        func.apply(context, args);        if (!timeout) context = args = null;    };    var throttled = function() {        var now = new Date().getTime();        if (!previous && options.leading === false) previous = now;        var remaining = wait - (now - previous);        context = this;        args = arguments;        if (remaining <= 0 || remaining > wait) {            if (timeout) {                clearTimeout(timeout);                timeout = null;            }            previous = now;            func.apply(context, args);            if (!timeout) context = args = null;        } else if (!timeout && options.trailing !== false) {            timeout = setTimeout(later, remaining);        }    };    return throttled;}
  • 手写合乎PromiseA+标准的代码
  • 手写观察者模式代码
  • 手写vue外围流程源码:实现响应式
  • 手写常考js代码:new、call、bind、apply、继承、柯里化、闭包、节流、防抖……
  • 手写常考css代码:所有div居中的实现、双飞翼/圣杯布局的所有实现、革除浮动的所有实现……

    我的项目梳理

    也是利用脑图梳理我的项目,从简介、职责、性能、痛点、亮点五个维度梳理,面试前肯定要把这些烂熟于心,不肯定要整顿很多我的项目,挑一个最大的最NB的进去,好好给整顿好了,滚瓜烂熟了,置信面试官不论问到哪都能巧舌如簧,就跟晓得本人老婆所有毛病一样()

    简历

    后面曾经说了很多了,这里强烈推荐一波ssh_晨光时梦见兮的《 如何写「前端简历」,能敲开字节跳动的大门?》

让面试官找到你

简历也写好了,接下来要做的就是要让你的简历被大厂HR和技术面试官看到,我第一次投递字节简历是boss直聘上有字节的技术面试官找到我要的简历,过后很忽然,也没怎么筹备,后果天然就是杳无音信,甚至已读不回了,过后受到相当大的打击,但也没有放弃大厂指标,始终发愤图强保持上述的筹备打算。第二年初春,刚逢成都字节客服平台团队成立的良机,于是HR从人才库中捞到我的简历让我更新后投递,因为这一年来始终在筹备,所以二话不说优化了两天简历就投了,不晓得是因为急招的起因,还是简历优化的比拟到位,一周后就收到面试邀请。这里我其实也有运气的一部分,然而如果这一年内我什么也不做,放飞自我,置信就算简历通过也不肯定能过面试。
总结下来有三点:

  • 不要怕投简历:不论学历和工作教训,只有你有信念,那就投,不要怕投到很热门的部门,就算没过也会被热心漂亮的HR小姐姐捞到其余部门,不要怕在一些平台投递会不会通不过筛选,都尝试下总有人能看到你,不要怕内推人投递简历不够格,内推人微信还能给你领导倡议,帮你跟进投递进度,不要怕投了杳无音信,进入人才库热心漂亮的HR小姐姐才更好捞人,简历冷冻期不存在的,只有部门须要,否则人才库中都没有记录,让热心漂亮的HR小姐姐如何找到你?
  • 时刻筹备简历:每隔一段时间要更新和优化你的简历,可能这段时间你经验更丰盛,看过的文章更有深度,造成了新的认知,学习了新的技能,奉献了更多开源代码和社区文章,时刻给你的简历加分,谋求极致,这也是字节范里最要害的一条
  • 时刻筹备面试:机会永远是留给有筹备的人,万一大厂明年新增很多部门急招人呢,试想下当初大厂HR忽然找到你要简历,本人能不能有信念。就算简历过关,一面就挂那岂不是白做功,你的能力肯定是在简历之上,从上述的几个方面着手,提前一年、半年操之过急地筹备,时刻晋升本人,这样才会给面试官“惊喜”,感觉本人挖到宝了。记得过后一面的时候,我始终感觉本人答的不好,下来才晓得一面评估是很棒,这和平时一点一滴养成的好习惯和自我晋升有很大关系,让优良成为习惯吧!

找早早聊评估简历

还不晓得前端早早聊?兴许这就是你始终没有进大厂的起因吧,还不快去关注加微信!

面试技巧

  • 结尾介绍

    • 构造要明确:比方我是介绍集体状况+工作经验+把握的技术+最近做过的我的项目+集体学习办法\体系+最近在看的书
    • 当时练习:玩游戏的时候通常是看他人操作,脑子会了脚也会了就是手不会,光说不练假把式,他人是天天玩,你连手都没动一下还相会?提前写下来,正当组织下语言通顺,尽量简短清晰,别说简历里曾经有的,多裸露你的短处
    • 工夫战术:构造为什么这么长,不就是为了让你简介的时候多说点,留给面试官问你题的工夫少一点减少容错率吗?
  • 甩常识体系

    • 问你一个知识点,你把知识点的概念、场景、原理、优缺点说完后还不够,再接着扯知识点相干的常识,全副拉进去欧啦一遍,这样的益处就是,又能说一大堆拖延时间缩小前面的问题,还能间接反馈你对其余关联知识点的把握水平,也在面试官心里默默加分了。我过后一个性能优化硬是说了将近10来分钟,只有不被打断,就是你的畛域开展<_<
  • 坦诚不装

    • 问到不懂的不要勉强答复,不论是知识点还是我的项目状况,这里的不懂指的是不精通(站在面试官角度思考),面试官问了,你答了,面试官就会默认你是精通的,如果问到卡住了,反而会在面试官心里减分。如果只是相熟或者理解的常识,能够提前给面试官说你只是理解,而后能够依据你的理解简略说一下,这样就算答的不好也不会给面试官太大心里落差
  • 提前相熟在线面试编辑器

    • 答题的时候肯定是在牛客或其余平台近程面,肯定会让你在编辑器写代码或算法,这里有个技巧是面试前都能够利用这个编辑器手写下所有会的代码,看下编译有没有问题,还有算法也能够看看后果有没有失常打印,不要面试的时候才去相熟,这样出问题只会更慌。我刚开始编译代码就呈现问题了,setTimeout没失效,还好及时发现换了另外的代码,不然就完犊子
  • 知错能改

    • 如果前几面有口试题没做对,下一背后肯定要把题给从新做一遍做对,因为面试评估里会写做对的题目,而后面试官看到你下来本人改了,不用说肯定也会给你加分的

面经分享

一面(50分钟) - 平级共事面

介绍:工作教训+开源我的项目贡献者+掘金新人作者+最近读过的书+本身长处毛病+最近做的我的项目(胜利扯掉7分钟,被打断了)

  1. cdn怎么解决的,如何复原?(根底)
  2. 说说浏览器缓存机制(根底)
  3. 说一说继承(语法)
  4. ES6如何继承(语法)
  5. 我不分明微前端(我不信),你介绍一下是什么,解决了哪些问题?(根底)
  6. 说一下vue的数据绑定机制是如何实现的(框架)
  7. Proxy比照defineProperty做了哪些改善(语法)
  8. GitLab CI/CD 是你搭建的吗?(工程)
  9. 谈谈你的我的项目如何实现灰度公布的(工程)
  10. 算法题(算法)
    给定长度为n的整形数组, 给定小一点的负数k, 找到数组中呈现次数大于 n / k 的数字; 1. 假如 n = 100, k = 2, 那么须要找到数组中呈现次数大于 50 的数。 1. 假如 n = 100, k = 10, 那么须要找到数组中呈现次数大于 10 的数;工夫复杂度尽量低该怎么做

二面(1个半小时) - 小组长面

介绍:工作教训+开源我的项目贡献者+掘金新人作者+最近读过的书+本身长处毛病+最近做的我的项目(胜利扯掉10分钟)

  1. vue3相比vue2做了哪些优化(框架)
  2. 如何放慢挪动端渲染?(性能)
  3. 沙箱的实现原理(语法)
  4. 微利用路由如何注册(语法)
  5. 怎么用路由规定解决加载多个利用(语法)
  6. 前端模块化机制有哪些(工程)
  7. 你们的我的项目怎么进行分支治理的(工程)
  8. 你在我的项目中遇到哪些问题,是怎么解决这些问题的,你负责哪局部内容(业务)
  9. 应用Webapck做过哪些优化?(性能)
  10. 工程化方面做了什么优化吗(性能)
  11. 这个微前端我的项目有哪些亮点?(业务)
  12. 谈谈对可视化图表技术的选型(业务)
  13. 理解 monorepo 及其工具吗,比方: babel、 redux,gitflow,UT and E2E(工程)
  14. 算法题 (算法)
    实现注入器,实现inject函数

    var DI = function(dependencies) { this.dependencies = dependencies;};// Should return new function with resolved dependenciesDI.prototype.inject = function(func) { // Your code goes here}// 要注入的依赖var deps = { 'dep1': function() { return 'this is dep1'; }, 'dep2': function() { return 'this is dep2'; }, 'dep3': function() { return 'this is dep3'; }, 'dep4': function() { return 'this is dep4'; }};// 新建一个“注射器”var di = new DI(deps);// 注射var myFunc = di.inject(function(dep3, dep1, dep2) { return [dep1(), dep2(), dep3()].join(' -> ');});// 测试Test.assertEquals(myFunc(), 'this is dep1 -> this is dep2 -> this is dep3');
  15. 实现一个字符串匹配算法, 从长度为 n 的字符串 S 中, 查找是否存在字符串 T, T 的长度是 m, 若存在返回所在位置

三面(50分钟) - leader面

次要问的还是我的项目,比二面的时候问的更具体,抽丝剥茧的水平

  1. (自我介绍中说了职业规划)为什么想做治理?
  2. 你对你们的这个微前端利用的业务状况理解吗?面向的客户是谁?他们是怎么应用的?
  3. 做过Hybird App吗?做的这个App次要业务是什么?
  4. 你说你奉献过开源代码,能说说奉献了哪些内容吗?
  5. 说说微前端的实现原理?
  6. 你有什么想问的吗?

面试要点

能够看到下面的问题根本是以下几种类型形成

  • 根底
  • 业务
  • 性能
  • 工程
  • 框架
    这里不说答案了,答案题型永远在变动,唯有把握题目背地的底层逻辑,才可能触类旁通,置信看到这你曾经晓得该从何下手了

前端面试宝典

这里分享下笔者的常识宝典,外面对应着这几个方向的知识点都有梳理和学习链接,不夸大的说,没有这份常识宝典笔者相对是进不了字节的

〉》〉》〉》〉》〉》〉》〉》〉》〉》
宝典在此
《〈《〈《〈《〈《〈《〈《〈《〈《〈

  • 第一步:点击创立正本
  • 最新面试信息
    不晓得什么时候字节招人?这里会定期更新!!还有内推链接哦

  • 面试手册
    这里有一些简历和面试的官网倡议

  • 外部模拟题
    列了100道常考题,笼罩了所有知识点范畴,能够帮你梳理和记忆答案,还能跳转知识点解说文章学习,笔者只做了60道就胜利毕业

  • 面试要点解析
    上百个知识点的学习计划表和学习链接都在这,妈妈再也不必放心你找不到最Nice的文章释怀学习了

总结

以上便是自己进大厂前半年做的筹备,总结下来是以下几个要点:

  • 养成好习惯:提前准备,夯实本人,操之过急,把握办法,有体系有自律,随时回顾
  • 把握面试外围四因素:简历、根底、我的项目、闪光点
  • 领有本人的一套常识体系,整顿成本人最清晰认知的语言,一直修改了解,一直写代码增强认知
  • 制订学习打算和指标:一个月内学完多少知识点,几个月后要投递简历到大厂,简历什么时候找人评估,内推资源找谁要(SuperLLL8523),隔靴搔痒,查阅对应大厂高频面试考点并针对性温习
  • 把握本人的一套面试技巧
  • 好好梳理你的我的项目,这是你跟面试官battle的重要武器
  • 把简历上写的技术和我的项目都吃透,面试的过程是发现长处的过程,面试官个别不会问太深简历之外的问题,但前提是得把写上的货色都精通,并且答出来也是让他人懂你是精通的,另外如果问到简历之外本人理解或相熟的,能够间接说理解然而能够用本人的了解来说一下,别间接说不懂,因为会给面试官一种有艰难就放弃的印象。

最初打个广告

好消息!字节跳动又又又开始招人了!!

扫码支付offer