个人背景:
迷茫受挫的大一:
楼主科班本科,大一尝试搞acm被大佬们虐惨了、参加院里的一个编程工作室又被拒了(有意思的是这个工作室后来来凉了)。。。 室友的成绩都比我好,觉得自己什么都做不成,陷入迷茫阶段,当时在河畔上看了很多干货帖子,最终准备投身开发。
例如:
- https://bbs.uestc.edu.cn/forum.php?mod=viewthread&tid=1779556
- https://bbs.uestc.edu.cn/forum.php?mod=viewthread&tid=1779509
- https://bbs.uestc.edu.cn/forum.php?mod=viewthread&tid=1819130
- https://bbs.uestc.edu.cn/forum.php?mod=viewthread&tid=1748185
- https://bbs.uestc.edu.cn/forum.php?mod=viewthread&tid=1769958
初入前端:
选择前端开发是觉得有趣,后面越来越觉得兴趣真的是驱动长时间学习的主要动力。大一暑假开始学习前端相关知识,学习html、css、还有jquery,记得都是在w3cschool上学习,有了一点基础之后,大二开学参加了 星辰工作室 的秋招,工作室的面试至今让我记忆深刻,为数不多的两轮技术面试进来的,坎坎坷坷终于进入工作室有了学长的指引了。
加入工作室的大二:
在工作室跟着之前学长写的培养方案做一些小练习,自己也在学习一些有意思的:比如vue、微信小程序、尝试用nodejs,不过大多都是跟着网上的教程或者b站的视频跟着做,学的挺晕乎乎的。(这里能感觉到学习需循序渐进的重要性,基础不牢,早晚要回来补的)
大二的疫情给了很多时间自学,这段时间看了几本很重要的书《高性能JavaScript》、《你不知道的JS上》、《红宝书》、《JS语言精粹》, 同时在工作室完成了两个项目,两个项目分别用了vue、react两个框架,实际的项目实战把我从纸面上的“会代码”转变成了“会写代码”(有一个长时间开发的项目对成长很有帮助)
大二暑假一边写项目一遍看牛客网,这个时候看牛客网只是觉得想看看自己有哪些不足,针对性的不足的地方去补充。
学院大二的暑期实习集训很是垃圾、垃圾、垃圾,只能去垃圾华迪浪费生命,不能自己找就很离谱。
求职准备
大三找实习:
最初找实习的想法萌发于 工作室想推荐一个人去和学习合作的小公司实习,面试通过之后觉得或许可以去冲一冲大厂,这个时候开始准备简历,加上暑假刷牛客网上的面筋,基本80%的题能打出来,简单刷一点leetcode开始投实习岗位的简历,在河畔和北邮人论坛找到邮箱开始发简历,找学长学姐内推,先从小公司下手,第一个面试的是成都滴滴,面试很顺利(面筋),通过后,入职实习。
滴滴实习了三个月,后考虑转正,转战上海,面了上海字节基础架构,在上海实习了6个月离职秋招。
实习对成长的帮助真的很大,能够接触到正规的开发-部署流程,看到公司里大佬的代码怎么写的,横向比较同类型项目但不同的解决方案。
结果
八月中旬从字节离职开始秋招,这个时候已经错过了秋招提前批,只能准备秋招正式批了。(秋招提前批很多公司免笔试)
(实习过久,或多或者会耽误秋招的,也不要鸡蛋放在一个篮子里,身边也有转正失败的)
因为还没有挂过,其实也一直担心被挂,秋招心理压力还挺大的,还好有一起找工作的小伙伴相互鼓励。
时间: 集中八月投递完成笔试,面试集中在9月初的两周内。
秋招:
- 字节转正offer
- 阿里云offer
- 快手生产效率平台offer
- 网易云音乐offer
- 美团基础平台offer
- 京东(挂)
- 准备投腾讯,结果内推被尼电学长拒之门外
补一句: 前端的ssp比例比后端的少,比如今年的阿里云开奖虽然yyds,但是前端最高也就看到27k,和后端30k遍地跑相比差多了。
11月开奖之后,除了美团大白菜 其他是sp/ssp
面筋
HTML/CSS
css实现垂直居中?
position有哪几种?对应的效果和用法
CSS选择器的优先级
BFC
SEO
标签
CSS画三角形
CSS动画
Iframe
移动端的三个视口
Download属性
CSS中的百分比
JavaScript
弱引用
基本包装类型
ES6新特性
判断类型的方法
Object.prototype.hasOwnProperty.call
原型链(你不知道的js上)?
变量提升
instanceOf原理
调用栈大小获取
浏览器的消息队列和事件循环
😵浏览器中的事件循环和node中的事件循环
setTimeOut & XMLHttpRequest
V8执行
代码执行流程
微任务和宏任务
async/await
Generator
new CreateObj操作做了什么
闭包
调用栈
垃圾回收机制
基于promise的简单封装
手写promise
事件冒泡和事件捕获
判断数组
箭头函数和普通函数区别
不能使用箭头函数的场景
😵原型继承函数Object.create
遍历对象的方法
requestAnimationFrame
React
长列表滚动到可是区域动态加载?
图片懒加载?
MV*模式(不考虑服务端渲染形式的MVC model2)
React事件系统
setState是同步执行还是异步执行(执行state的修改)
为什么引入Hooks? (from 官网
为什么不能给Hooks添加判断条件
🚩Hooks理解(摆脱生命周期)
?Hook中的闭包问题
浏览器
浏览器内核
CSS动画比JS高效
DNS-prefetch
性能分析
浏览器多进程架构
Perfromance怎么使用?
😵微信小程序相关?
浏览器的缓存(缓存的设置都是部署/后台来做)
输入url到渲染流程(浏览器角度)
JS操作对HTML解析器的影响
白屏
重排和重绘
减少重排/重绘的操作
window.onload和DOMContentLoaded有什么区别
MIME
😵跨域
浏览器对JS的限制
😵cookie和session
Node
Restful风格(http协议设计思想)
rector模式
node中事件循环
Nginx??
缓存优化(客户端缓存、服务端缓存)?
服务端开启gzip压缩?
计算机网络
CDN
状态码
HTTP0.9
HTTP1.0
HTTP1.1
Http2.0
HTTP3.0
Cookie
常见的数据提交方式
浏览器安全
CORS (cross origin resource sharing)
常见的数据传输格式
常用请求头解析:
三次握手四次挥手
为什么要三次握手?
工程化
前端优化方案
懒加载
埋点?
Polyfill
AMD和CMD区别
以上不全,有些简答常见没有记录。
网易云音乐
一面
- 自我介绍
- 为什么选择前端
- 怎么学习前端
- 字节实习工作介绍
- 字节实习核心工作介绍
- webpack构建流程
- webpack如何实现各个模块之间的隔离
- 为什么选择网易云音乐
- 做题:两个路径之前的相对路径生成
-
二面
自我介绍
- 字节实习核心工作介绍(问的很细,有追问
- 实习中工具的业务使用量
- 实习中遇到的项目难点 (细、追问
- react的理解
- 受控表单和非受控表单
- 正则熟悉吗? 不熟悉
- 做题: 数组转对象 (考虑原型链影响)
-
hr面
自我介绍
- 实习遇到难点
- 自我评价
- 有多少offer?
- 选择offer考虑因素优先级?
-
总监面
自我介绍
- 为什么选择前端?
- 怎么学习前端?
- 字节实习工作详细介绍(问的很细,从业务到代码架构)
- vue和react比较
- 老生常谈了
- 从定位、思想、工程三个角度答
- 项目最初创建如何技术选型
- 不太会,扯了一波工程难度、社区方案等
- 觉得有什么优势以及不足?
- 平时看什么博客?
- 看知乎、medium、掘金、github、看书
- 讲一个最近印象深刻的一个博客? (我说了一本书的某个章节
- 接上面: 觉得 事件多路分解器 相对于 轮训 的优点
- 本科学习的课程有没有在实际项目中应用过?
- 说了关于编译原理在markdown渲染中的应用
- 改造websocket中请求和响应无法对应时借鉴http2.0多路复用的机制
- 实习中遇到的难点
- 为什么实习中的项目使用websocket
1.便于调试时开发人员使用network面板
2.服务端推送功能 - 反问
- 加班
- 团队定位
-
快手生产效率平台
一面
自我介绍
- 字节实习详细介绍
- 盒模型
- 选择器优先级
- 垂直居中方式
- 跨域方式
- cors详细说说、预检请求
- jsonp原理(并手写)
- 手写:拍扁数组函数
- 手写:Promise.all
- 使用 webSocket遇到的问题
- 实习中构建工具的架构
- webpack构建流程
- babel了解吗? (不熟
- react fiber的优化
- fiber如何实现可中断更新
- requestIdleCallback最初是如何实现的
-
二面
。。。
前面有二十分钟的没有记录 其他打包工具了解吗?
- hooks理解
- react和vue的比较
- hooks缺点如何解决
- h5适配方案介绍
- 淘系这种适配方案有什么问题?
- 最长连续子字符串
-
三面
自我介绍
- 实习经历介绍
- lowcode理解
- 如何度量lowcode提供模块对业务的覆盖率
- 线形代数中向量空间(忘了)
- lowcode中如何实现组件联动
- 图形化编程
- 计算机和其他电器的主要区别
-
hr面
自我介绍
- 项目难点(问的很细)
- 字节的优缺点
- 手中offer情况
- 能不能提前实习
- 考虑offer因素排序
- 反问
阿里云
一面
- 面试官首先介绍部门
- 自我介绍
- 字节实习工作详细介绍
- 插件可视化怎么做的
- 如何定义组件颗粒度
- lowcode介绍
- 如何发布物料
- 实习中完成的难点/亮点
- 为什么使用redux
- 为什么不在vue中使用redux,而在react中常用redux
- redux源码理解
- hooks理解
- hooks如何替代了class component
- map、 weakMap区别
- 垃圾回收机制
- 新生代垃圾回收机制算法
- dom如何被渲染到浏览器中
- 虚拟DOM的理解
- 前端异步方法
- Promise的构造函数是异步还是同步的
- http1.0、 1.1、 2.0 区别
- 场景题: 画一个五角形,如何给这个形状中某个区域填充颜色?(计算机图形学中点填充算法/线填充算法)
-
二面
死锁
- tcp三次握手原因
- tcp四次挥手原因
- 堆、栈区别
- 堆、栈垃圾回收机制
- 闭包是什么
- 闭包有什么作用
- 闭包为什么不能被其他直接访问
- 原型是什么
- 原型链
- 原型链终点
- vdom主要用来做什么
- 浏览器渲染过程
- 浏览器渲染时html、css、js优先级
- 重排和重绘区别
- 跨域指的是什么
- 什么不受跨域影响
- 跨域的解决方案
- cors原理
- react、vue比较
- 实习中最艰难的挑战(三个)
- 有拿到其他offer?
- 如何学习新的东西?
- 如何快速找到前端学习方法?
-
hr面
自我介绍
- 为什么从滴滴转到字节实习
- 两段实习的不同
- 实习中最大的收获
- 自己的长处、不足
- 选择offer关注的因素
- 平时如何学习,交流
- 为什么选择前端
- 其他兴趣爱好
- 反问
-
美团
一面
自我介绍
- lowcode平台介绍
- 实习业务介绍
- 实习中自己实现的功能
- lowcode如何应对复杂场景
- 项目中遇到的难点以及细节
- hooks的理解
- mobx和redux区别
- 实现柯里化
- promise理解
- async await 直接return Promise问题
- 事件循环
- Map和Set和Array区别
- array自身的方法和外部方法区别
- forEach性能和for let 性能比较
- 性能优化方案
- 垃圾回收机制
- node写过吗: 没有
- ts: type和interface 区别
- ts: 内置工具泛型
- 反问
二面
- 自我介绍
- 字节实习介绍
- 字节实习自己主要完成的工作
- 实习中构建工具架构的介绍
- lowcode工具的介绍
- 如何计算dom元素相交点计算
- 大学课程
- AST
- HTML如何编译成语法树
- 三次握手
- 四次挥手
- 做题: 斜遍历数组
-
三面
自我介绍
- 如何平衡上课和实习
- 编译原理说的什么
- 有限自动机
- 瀑布模型
- http发包流程
- http头部都有哪些
- 数据库第一范式 (???忘了
- 如何学习前端
- react hooks 源码
- react router原理介绍(问了两遍,尴尬的我说了两遍)
- 做题:最长公共子序列-II
做题:连续子数组的最大和
hr面
-
京东
一面:
自我介绍
- 拿到offer了嘛
-
二面:
自我介绍
- 字节实习经历介绍
- 为什么不留在字节
- 实习中遇到的难点
- 实习中lowcode平台
- 反问
除此之外:如果对某些领域有深入的了解是很好的加分项(用来面试耗时间)
如: lowcode、webpack原理、微前端、垃圾回收、函数式编程、某些源码实现
结尾
早点规划,我觉得规划半年以上的都能拿到offer,早早背题,前端的算法考的都不难,leetcode至今我也只刷了六十几道;能实习就去实习,哪怕只是实习两个月,涨涨见识也好,主要是能看到自己的不足。
感谢河畔的上学长学姐经验分享,希望这篇也能有点帮助。