普通二本如何才能进入腾讯阿里百度这些大厂做前端开发?

Posted 前端程序员TD

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了普通二本如何才能进入腾讯阿里百度这些大厂做前端开发?相关的知识,希望对你有一定的参考价值。

现状和背景

我是今年二本毕业的,大三升大四的暑假期间开始学习前端,在这之前一直在小公司打滚。

在这样的背景下,我从2020年末到2021年三月底为止;基本面完了深圳大多大公司和一些小公司;这篇文章主要是分享自己的一些经历。

面试情况

  • 腾讯 - offer
  • 京东凹凸实验室 - 谈薪环节
  • 字节跳动 - 谈薪环节
  • 富途证券 - offer
  • Coding - 谈薪谈崩
  • 顺丰 - 笔试 + 一面(薪酬面试官直言给不到,就没继续下去)
  • 还有一些中途挂了的公司(蚂蚁、阿里国际化、大疆、微众)

可能大家觉得面试收获不错,但其实我拿到的大厂offer基本是2021年3月份左右收到的,而面试挂掉的基本是2020年年末;当时真是陷入了自我怀疑和崩溃之间,还好我没有放弃,一路摸爬滚打最终选择了腾讯。

说实话,普通二本进大厂很难,但并不是没有机会。想进大厂,就得知道大厂校招看重什么?

校招看什么

校招看重的是四个光环:名校光环、竞赛光环、实习光环、项目光环!!!就像很多同学以为刷刷Leetcode就能拿offer一样,实际帮他拿到offer的是他的学校名字,而不是LeetCode。

学校,在我们踏进去的那一刻就决定了。而另外三个却是我们可以自己争取的。这些内容无论你是应聘大公司还是小公司都是非常有竞争力的,跟着做吧。

在大学期间,有很多的算法竞赛、ACM竞赛,尽量参加全国性的,有含金量的比赛,这才能眼前一亮。

去大公司实习,相比校招进入大公司,那是简单很多,二本学校的学生,也能进得去实习。而且在大公司都有实习生转正的机会。

即便进不去大公司实习,在校招时,有实习经历,也会是简历上很重要的一项。而且一般有实习经历,就会有项目经验,这真是一举两得。

如果实在没时间实习,或者实习中没做什么项目的话,那怎么办呢?在简历中最重要的就是项目经验了,如何解决呢?

敲黑板!!!没有项目经验就造项目经验!!!!

现在网上那么多的实战教程、github上遍地的源码分享,都可以为你所用。

在面试时,这些项目经验都可以写上,最关键的是自己要弄通、弄会,尽量先仿一遍,自己再从头到尾自己再写一遍,把所有涉及到的知识点都弄通弄会。面试的时候,就实话实说,就说你自己仿的,没有关系,做为面试官,我们更看重的是你会啥并且你是不是真的会。

说了这么多,其实想告诉大家的是,不要以为在985/211名校就能不努力了,每年名校毕业找不到工作的大有人在。只有在名校且成绩好的同学,才不需要努力。而可笑的是这部分人却恰恰是最努力的人群。

面试前准备

扎实的技术基础是面试大厂的前提

  • javascript基础(ES6+)
  • 浏览器基础(Dom Api、Bom Api、运作机制、渲染原理等等)
  • 算法基础(常见数据结构的应用(栈、队列、树、链表)、dfs、bfs、简单的dp)
  • 网络基础(https、http、http2、dns、tcp等等)

上面这些基础知识算上是基本要求,而且大多需要日常的积累,基础问题最好还要答出具体的应用场景和解决了什么问题。

例子:

  • 栈的应用:实现面包线或者路由组件,是典型的栈。
  • dfs:vue diff过程中采取的策略就是dfs,优势是****。
  • http2解决了什么问题?解决了http大请求阻塞等等。

另外就是原理题目要答的够细致:

  • 浏览器加载/解析流程
  • 浏览器渲染原理
  • event loop工作原理
  • 最好能够去看一遍HTML Standard

如果对自己这方面的技术有信心后,就可以去刷面试题进行查漏补缺(面试题真的只能当查漏补缺看)。

另外不要看不起一些基础技术,觉得用到去查就行了,常见被我们忽略的基础:

  • 正则表达式(我一开始忽略了,死的很惨)
  • 隐式转换(我一开始忽略了,死的很惨)

可能其他同学也会有各种平时觉得用不上的技术,压根看不上的技术,觉得没必要看。但到真的问到就凉了,所以我觉得是看的越多成功率越高。

框架层面,类似react和Vue反而没有太多问题,基本上了解实现原理,看过核心源码,理解设计上的理念就问题不大。

工程项目基础

我之前实习是做金融方面的业务,虽然存在一定的复杂度,但业务专业性太强,面试官根本不懂我做得是啥;一开始我只要聊自己写的业务,面试官基本处于懵逼状态,然后就挂了。

所以后面工程和项目相关,我主要说的就是大家都能听得懂的方向了:

  • 性能优化(内存、初始化)
  • 前端监控(用户轨迹埋点、错误监控)

在回答项目问题的过程中个人个人认为需要说清楚下面的问题:

  • 为什么要做这件事情(交代背景和原因)
  • 实施过程是怎么样的,遇到了什么困难,如何解决?(确认你参与度)
  • 最后取得了什么样的成效(最好能提供实际数据)?
  • 拓展:在大量的用户(数据)环境下,会遇到什么样的问题

面试过程中技巧

面试过程中除了写编程题和问一些基础问题;其余时间基本都属于聊天,所以重点在于能把天聊下去。聊得开心也就过了;聊得卡顿,让面试官频繁看简历找问题问,基本就凉了。

所以事先准备一套能够足够深入聊下去的技术方向就显得非常重要,自己脑补好一套连续的问题,自问自答;在面试过程中,引导面试官到自己事先准备好的方向。

前端大厂面试宝典

我把之前刷过的大厂面试题做了一个整理,分了html、css、JavaScript、React、Vue、浏览器、服务端与网络、算法等等…现在分享给大家,希望能帮助到想在这条路上一路走到黑的朋友。

HTML

  • html 语义化
  • canvas 相关
  • svg和canvas的区别?
  • html5有哪些新特性?
  • 如何处理HTML5新标签的浏览器兼容问题?
  • 说说 title 和 alt 属性
  • HTML全局属性(global attribute)有哪些

CSS

  • 让一个元素水平垂直居中,到底有多少种方案?
  • 浮动布局的优点?有什么缺点?清除浮动有哪些方式?
  • 使用display:inline-block会产生什么问题?解决方法?
  • 布局题:div垂直居中,左右10px,高度始终为宽度一半
  • 盒模型
  • CSS如何进行品字布局?
  • CSS如何进行圣杯布局
  • CSS如何实现双飞翼布局?
  • 什么是BFC?
  • 触发条件
  • BFC渲染规则
  • 应用场景

JavaScript

  • JS原始数据类型有哪些?引用数据类型有哪些?
  • null是对象吗?为什么?
  • ‘1’.toString()为什么可以调用?
  • 0.1+0.2为什么不等于0.3?
  • 什么是BigInt? 为什么需要BigInt?
  • 如何创建并使用BigInt?
  • typeof 是否能正确判断类型?
  • instanceof能否判断基本数据类型?
  • 能不能手动实现一下instanceof的功能?
  • Object.is和===的区别?
  • [] == ![]结果是什么?为什么?
  • JS中类型转换有哪几种?
  • == 和 ===有什么区别?
  • 对象转原始类型是根据什么流程运行的?
  • 如何让if(a == 1 && a == 2)条件成立?
  • 什么是闭包?
  • 闭包产生的原因?
  • 闭包有哪些表现形式?
  • 如何解决下面的循环输出问题?
  • 原型对象和构造函数有何关系?
  • 能不能描述一下原型链?
  • JS如何实现继承?
  • 函数的arguments为什么不是数组?如何转化成数组?
  • forEach中return有效果吗?如何中断forEach循环?
  • JS判断数组中是否包含某个值
  • JS中flat—数组扁平化
  • 数组中的高阶函数
  • 能不能实现数组map方法 ?
  • 能不能实现数组reduce方法 ?
  • 能不能写一个完整的深拷贝?
  • 数据是如何存储的?
  • V8 引擎如何进行垃圾内存的回收?
  • 描述一下 V8 执行一段JS代码的过程?
  • 宏任务(MacroTask)引入
  • nodejs 和 浏览器关于eventLoop的主要区别
  • nodejs中的异步、非阻塞I/O是如何实现的?
  • JS异步编程有哪些方案?为什么会出现这些方案?
  • 能不能简单实现一下 node 中回调函数的机制?
  • Promise 凭借什么消灭了回调地狱?
  • Promise 如何实现链式调用?
  • 现Promise的 all 和 race
  • 解释一下async/await的运行机制

HTTP

  • HTTP 报文结构是怎样的?
  • HTTP有哪些请求方法?
  • GET 和 POST 有什么区别?
  • 如何理解 URI?
  • 如何理解 HTTP 状态码?
  • 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?
  • 对 Accept 系列字段了解多少?
  • 对于定长和不定长的数据,HTTP 是怎么传输的?
  • HTTP 如何处理大文件的传输?
  • HTTP 中如何处理表单数据的提交?
  • HTTP1.1 如何解决 HTTP 的队头阻塞问题?
  • 对 Cookie 了解多少?
  • 如何理解 HTTP 代理?
  • 如何理解 HTTP 缓存及缓存代理?
  • 为什么产生代理缓存?
  • 源服务器的缓存控制
  • 客户端的缓存控制
  • 什么是跨域?浏览器如何拦截响应?如何解决?

TCP协议

  • 能不能说一说 TCP 和 UDP 的区别?
  • 说说 TCP 三次握手的过程?
  • 为什么是三次而不是两次、四次?
  • 三次握手过程中可以携带数据么?
  • 说说 TCP 四次挥手的过程
  • 为什么是四次挥手而不是三次?
  • 介绍一下 TCP 报文头部的字段
  • 说说 TCP 快速打开的原理(TFO)
  • 说说TCP报文中时间戳的作用?
  • TCP 的超时重传时间是如何计算的?
  • 说一说 TCP 的流量控制
  • 说说 TCP 的拥塞控制?

浏览器

  • 说一说浏览器缓存?
  • 说一说浏览器的本地存储?各自优劣如何?
  • 说一说从输入URL到页面呈现发生了什么?(网络)
  • 谈谈你对重绘和回流的理解
  • 能不能说一说XSS攻击?
  • HTTPS为什么让数据传输更安全?
  • 能不能实现事件的防抖和节流?
  • 能不能实现图片懒加载?

Vue

  • 什么是MVVM?
  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?
  • 组件之间的传值?
  • Vue 双向绑定原理
  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
  • 虚拟 DOM 实现原理
  • Vue 中 key 值的作用?
  • Vue 的生命周期
  • Vue 组件间通信有哪些方式?
  • vue 中怎么重置 data?
  • 组件中写 name 选项有什么作用?
  • vue-router 有哪些钩子函数?
  • route 和 router 的区别是什么?
  • 说一下 Vue 和 React 的认识,做一个简单的对比
  • Vue 的 nextTick 的原理是什么?
  • Vuex 有哪几种属性?

数据结构与算法

  • 链表
    简单的反转链表
    区间反转
    两个一组翻转链表
    K个一组翻转链表
    如何检测链表形成环?
    如何找到环的起点
    合并两个有序链表
    合并 K 个有序链表
    判断回文链表

  • 栈和队列
    有效括号
    多维数组 flatten
    普通的层次遍历
    二叉树的锯齿形层次遍历
    二叉树的右视图
    完全平方数
    单词接龙
    优先队列
    关于堆的说明
    实现一个最大堆
    实现优先队列
    前 K 个高频元素
    合并 K 个排序链表
    什么是双端队列?
    滑动窗口最大值
    栈实现队列
    队列实现栈

  • 二叉树
    前序遍历 / 中序遍历 / 后序遍历
    最大深度 / 最小深度
    对称二叉树
    二叉树的最近公共祖先
    二叉树的直径
    二叉树的所有路径
    二叉树的最大路径和

完整版PDF资料免费分享,只需你点赞支持,【动动手指点击此处就可免费领取了】

以上是关于普通二本如何才能进入腾讯阿里百度这些大厂做前端开发?的主要内容,如果未能解决你的问题,请参考以下文章

一个二本本科生如何才能进入腾讯,阿里,百度这些大厂?

一个二本本科生如何才能进入腾讯,阿里,百度这些大厂?

8年Android老司机的面经,教你如何进入阿里腾讯华为等大厂

普通二本,学这些东西,也能进大厂

普通二本,学这些东西,也能进大厂

普通二本,学这些东西,也能进大厂