前端开发两年,你有没有觉得很吃力?

前言

前端工作两年多。大部分前端原理、框架都能完全运用。工作中几乎遇不到解决不了的问题(除了那些恶心无法实现的需求)现在经常被安排去面试新人(被安排去面试,主要是工作能力比较突出的原因,公司还有很多3年以上的员工)。下面说说我的学习方法或许对你有用!

一、打好基础不用说

HTML、CSS、JavaScript 三大件,完全掌握。不懂得就直接查 MDN。HTML重点掌握语义化。区分块级和内联标签。其他查文档就好了。还有就是定义 head 里面一些meta 了解下。

CSS。重点看盒子模型,定位,层级,过渡,动画和 transform。知道原理和规则。大部分工作都是照着设计稿化。掌握上面几个99%还原也不难。接下来重点学习几种常见的布局。完了之后去搞flex。最后搞下sass、less。基本就差不多了。

JavaScript。重点来了,红宝书看一遍掌握基础,进阶去看《你不知道的 JavaScript》。就这两套足够了,别搞那么多。每个知识点搞懂。ES6基本没啥问题。下面几个问题优搞懂,优先级如下:

  • this 用法,相关原理
  • 原型/原型链
  • 闭包
  • 面向对象相关
  • 同步异步/回调/promise/async、await
  • 模块化 CommonJS, AMD
  • 先搞这懂这些比较难的概念,对你JS理解更加深入。接下来在开始看框架方面

二、框架方面

前期要会用,后期要懂原理。

新人先搞 Vue。Vue 算是比较简单的框架了,上手容易。照着官方文档来问题不大。原理方面要提高自己认识。学习怎么看源码。github常去逛逛。

学习框架之前,我其实特别建议,新人先去了解 Babel 和 webpack 不仅仅是使用。一些原理方面的东西工作中也会用到。babel 里面会有教你如何编译代码。webpack教你如和打包文件。自己手写编译器和打包工具也不是特别难。反正对之后看vue、react源码帮助挺大。

搞完 Vue 全家桶,去了解下 React,React hooks 学习下新的理念。再回过头来看Vue。你会发现他们是如此的相似去又不同。

多去实践总结,对整体框架理解会越来越深刻。

今天先马到这里。想写的太多,马上就要上班下次有空再来码...

三、如何看源码

新人刚开始看源码,会陷入两个困境中。一是无从下手。二是看了之后感觉没啥收获。

这个也很正常。一般我们熟知的框架都有个几千甚至上万个PR。太大细节会干扰你。掌握整个节奏和流程。学习原理也比较吃力。就连找个入口都像大海捞针一样。建议从下面几个方面入手:

  • 挑简单的上手。别一开始就搞 vue、react、webpack。太难,会直接劝退新人。不要为了面试而去读。反而效果不好,面试稍微问深入一点就答不出来了。平时有兴趣多琢磨琢磨。按照难易程度,函数库 < 组件库 < 框架 < 工程化 分别典型代表 lodash < vant < vue < webpack

  • 手撸简易模型。像vue, webpack, babel 都有简易项目给你撸。有的创始人(尤哥)还直播手撸。国外的更多,youtube 一搜一大堆。就算不看源码,照着写出了简易 demo 对原理和理解提升都是很大的。

  • 调试开源项目。先把项目拉下来。在vscode里面跑下,核心函数多打几个断点。看看里面变量是怎么diff的。对理解更深刻了。

看了源码是别人的,学到了是自己的。学习时候边记笔记,边思考原理,总结经验。下面来谈谈前端工程化怎么弄。

四、前端工程化

现在最流行的打包工具 webpack 用起来。当然直接用 vue-cli2、vue-cli3、create-react 都是可以的。但是 webpack 相关还是得掌握。

首先重点搞下babel、webpack。学习下编译,打包的原理。自己配置下 webpack。尝试自己去写下下 webpack 的 loader 和 plugin。学习这些之前要懂一点 node.js, node.js 不需要全部学习。一般就日常用到读写文件fs接口,path 路径接口。这些 api 都不难写几个 demo 就懂了。基本上webpack 里面配置文件也没用到多少 node 的东西。最后自己学会配置webpack的配置文件。

如果想深想去优化打包体积和速度,就需要去了解很多webpack插件。webpack 里面最核心的就是插件了。

当然前端工程化不仅仅是这些,CI/CD可持续集成, Umi 了解下。shell各种脚本自动化命令、代码生成技术了解下。

五、性能优化的方案

一般来说。性能优化没什么系统化的文档供人学习。完全靠一些经验和自己的实践。

我们常提到性能好坏是由什么来衡量呢?

访问页面地址 --> 页面首次加载数据 --> 渲染出完整页面的时长

非首次情况下,命中缓存的加载缓存数据 --> 渲染出完整页面的时长。

一般我从下面几个方面着手去做,一般问题都不大。

减小资源(静态资源,后端加载的数据)大小

  • 压缩代码HTML/CSS/JS
  • 压缩图片、音视频大小
  • Tree-Sharking 消除无用代码
  • 以上webpack都可以搞定

避免同一时间的过多次数请求

  • CSS 实现雪碧图:使用background-position共享一张图
  • 图片懒加载:监听滚动后offsetTop, 使用src 替换 src(真实路径)
  • 列表懒加载(分批加载):监听滚动后offsetTop, 发送请求加载下一页的数据
  • 路由懒加载
  • 代码分包分块加载(webpack)
  • 预加载技术
  • 小程序分包、预下载等。

利用缓存(空间换时间)

  • CDN 内容分发:获取更近网络节点缓存下来的静态资源
  • 浏览器缓存(自带)
  • 部分资源保存在LocalStorage或者APP缓存中(手动操作)

其他

  • SSR 服务端渲染:解决SPA框架带来JS动态渲染页面带来的延迟和白屏问题。

这些都可以去实践的,难度不大。难度大的地方可能是 dom 节点成千上万的时候渲染的性能问题。这个场景遇到的很少,方案很多。不同人有不同解决方案,有功夫可以自己去尝试尝试。

上面提到很多点都可以深入到很深。由于篇幅原因,点到即止。

纯粹是把一些我以前走过的弯路掰直了再分享给大家。毕竟不是《前端入门到精通》哈哈哈

六、学习移动端web开发

前端现在为什么这么火?各个公司都还挺缺优秀的前端。原因在于技术红利。

移动端web流行起来之后,特别是H5和小程序,带动了多少前端就业,前端迅速取代了安卓和iOS 的大量岗位。

回到正题:所以作为前端人,移动web一般是都要接触的。不同于PC 端。

移动端有哪些东西呢?不需要全部懂,差不多知道就行了。要用的时候再去学。

  • 绝对单位换相对单位:px => rem / vw / rpx
  • 弹性布局:使用flex、grid布局
  • hairline (1px的粗线处理):使用伪元素 + transform: scale(倍数) 缩放线框
  • WebView 环境了解下
  • 安卓iOS 兼容踩坑:点击延迟、穿透、滚动不流畅、安全区域等等。
  • 小程序开发相关踩坑
  • JSBridge: H5 与App 通信
  • H5动画制作
  • 跨平台框架:react native、weex、flutter 等等
  • 简单的说移动web 就是:html/css/js 跑在手机app 里面的WebView(web运行环境)。

小程序/公众号就是在这个基础上,将自己APP里面的WebView 租售给其他人使用。

微信APP ----- 提供SDK ----> 微信webview ----- 提供运行环境-----> 公众号h5 / 小程序

为什么微信可以容纳几乎无限的H5/小程序页面呢?

因为公众号/小程序的代码都存储在云端,通过不同的路由就可以给几乎无数的开发者使用。

使得微信成为一个运行环境+入口的存在。

七、做前端我有没有觉得吃力?

刚做时前端不吃力。因为我是软件工程专业,学前端之前,学过 C/C++、Java、PHP、.net 成绩还不错基本都是90多分。感觉自己干后端也不吃力。实验室里面的项目都是前后都写。最爱 PHP,当时最崇拜鸟哥。本以为以后就走上PHP后端工程师的道路了,成为鸟哥那样的大神。

由于项目需要的原因,后来渐渐开始学起学 HTML、CSS、JavaScript 这些语法相关的东西。刚接触时没有感觉太大难度。

当时就想着怎么把页面搞好看,搞各种动画炫技。写一个小球从下面弹出来的效果,换各种姿势弹出。当时觉得前端真的有意思,就入了前端的坑。入坑前,以为前端就是搞各种漂亮的页面,各种特性惊艳别人。

随着接触的越来越深。接触到了 AJAX, jQuery ,Bootstrap,前端开始注重体验。各种框架横空出世 backbone => Angular => React => Vue 眼花缭乱。

折腾了 JQuery 开始折腾 backbone 觉得前端还能这样玩。有些迷茫了,感觉脑袋快要炸了,那段时间特别焦虑,疯狂看书写代码,怎么这么多东西要学啊。

JavaScript 也不精通,到原型就不理解了,虽然有C++,JAVA面向对象的知识,但JavaScript 你怎么和别人玩的不是一个套路啊。当时就都用ES6了, 行,学。都用Sass了,行,学。不学也可以,看不懂别人的代码呀。

毕业前为准备校招前端工程师,真的很吃力。就怕校招面试时,自己啥都不懂。

功夫不负有心人,校招时候顺利拿到了自己满意的Offer。记得当时和面试官对答入流,好像找到知音一样。面试官也是过来人,基本能问的都问了。

拿到Offer之后就去了实习。实习第一个任务:将一个ES6的后台管理系统重构成 Vue2.0 全家桶的项目。有个导师带,但是她和我是不同项目,出了架构以外代码都是自己写。

这个阶段还是收获了很多:

  • git 命令特别熟练。commit、stash、merge/rebase、cherry-pick、push/pull/fetch、reset等等基本都敲都特别多了
  • 严格了代码规范。Eslint、prettier 都用起来了
  • 会自己写业务组件,会封装高级组件、写常规页面了。基本上大部分不是特别复杂的交互都ok。难一点多找下资料可以做出来。
  • 学会管理API了。自己尝试封装了 axios。统一处理错误和弹窗。
  • 会抽取公共css、JavaScript 函数,编写CSS 变量和JavaScript 常量了
  • webpack 能看懂配置文件了。

实习过后顺利转正。转正之后,换了另外一个导师带,加入到项目组作为一个比较大的项目的核心开发。基本不再做管理系统了。主要做一个saas 平台。涉及比较难的富文本编辑,UI 拖拽生产文章,数据可视化生产报表等等。还写了几个谷歌浏览器插件。

  • 开始提升写页面效率,写的比较快了。
  • 研究 webpack 的插件打包编译效率
  • 研究 babel 编译原理
  • 研究了 Vue 编译的一些原理
  • 研究了 一些图表的使用,多半使用的echart。常规图表基本都用过。
  • CI & CD 自己去搭建。学了一些 shell 脚本开发。研究了 docker 相关的东西。
  • 尝试去写基础组件,搭建基础组件库。
  • 学习 React 相关的语法。
  • 研究富文本编辑,图片压缩裁剪原理等等
  • 写一个简单的微信公众号,接触到了 H5 开发。

工作第一年,基本上主战场在PC 端。前半年挺吃力,后半年熟练后游刃有余。会怼产品,会喷设计,会和后端兄弟配合默契。和团队感情也很深了。

无奈项目由于某些原因终止,团队解散,调到新团队。在老东家工作一年多后,由于个人原因离开去了一家新的的公司,主战场从PC 到了手机。开始接触移动H5、hybrid 开发。

八、学习吃力的原因肯定是学习方法不太正确

总结下一般怎么才能真正学到东西

  • 详略得当:前端知识太多,抓重点学,不要像背字典一样。
  • 不要急着写代码,先理清流程(以一个函数为单位,可以先写注释)再写代码。
  • 看视频看讲解是会误以为自己会了,其实并没有。
  • 学会总结:一句话可以讲清楚的事情,不要多说一句。减少心智负担。
  • 不介意复制代码,但是要知道这个代码里面大致实现原理。感兴趣自己重写一个。
  • 较大的项目,不要急着看代码。可以先把项目跑起来。通过改代码里面的参数来理解里面的核心流程。
  • demo 式编程。对于新框架,参考demo来上手更快更容易理解。
  • 渐进式编程。对于比较复杂的功能/需求。不要想着一气呵成。先实现一个核心,每次往上面加细节,有点像绘画。
  • 断点单步调试很有用,定位bug会更快。当然有些不易调试的应用选择打log。一次打 log 要多打点,免得打完log,有得再加。
  • 黑盒太多的项目,实在找不到bug原因。发给同事帮忙看。可能很快就能看出来。当局者迷,旁观者清。(很多时候是拼写的问题)

九、最后

我总结一下前端面试的知识点,希望能对即将面试和未来面试的小老弟们,有所帮助!skr~~skr(面试题完整文档划到文末直接免费领取。)

HTML

  • HTML5新特性,语义化
  • 浏览器的标准模式和怪异模式
  • xhtml和html的区别
  • 使用data-的好处
  • meta标签
  • canvas
  • HTML废弃的标签
  • IE6 bug,和一些定位写法
  • css js放置位置和原因
  • 什么是渐进式渲染
  • html模板语言
  • meta viewport原理
前端开发两年,你有没有觉得很吃力?_第1张图片

CSS

  • 盒模型,box-sizing
  • CSS3新特性,伪类,伪元素,锚伪类
  • CSS实现隐藏页面的方式
  • 如何实现水平居中和垂直居中。
  • 说说position,display
  • 请解释*{box-sizing:border-box;}的作用,并说明使用它的好处
  • 浮动元素引起的问题和解决办法?绝对定位和相对定位,元素浮动后的display值
  • link和@import引入css的区别
  • 解释一下css3的flexbox,以及适用场景
  • inline和inline-block的区别
  • 哪些是块级元素那些是行级元素,各有什么特点
  • grid布局
  • table布局的作用
  • 实现两栏布局有哪些方法?
  • css dpi
  • 你知道attribute和property的区别么
  • css布局问题?css实现三列布局怎么做?如果中间是自适应又怎么做?
  • 流式布局如何实现,响应式布局如何实现
  • 移动端布局方案
  • 实现三栏布局(圣杯布局,双飞翼布局,flex布局)
  • 清除浮动的原理
  • overflow:hidden有什么缺点?
  • padding百分比是相对于父级宽度还是自身的宽度
  • css3动画,transition和animation的区别,animation的属性,加速度,重力的模拟实现
  • CSS 3 如何实现旋转图片(transform: rotate)
  • sass less
  • 对移动端开发了解多少?(响应式设计、Zepto;@media、viewport、JavaScript 正则表达式判断平台。)
  • 什么是bfc,如何创建bfc?解决什么问题?
  • CSS中的长度单位(px,pt,rem,em,ex,vw,vh,vh,vmin,vmax)
  • CSS 选择器的优先级是怎样的?
  • 雪碧图
  • svg
  • 媒体查询的原理是什么?
  • CSS 的加载是异步的吗?表现在什么地方?
  • 常遇到的浏览器兼容性问题有哪些?常用的hack的技巧
  • 外边距合并
  • 解释一下“::before”和“:after”中的双冒号和单冒号的区别
前端开发两年,你有没有觉得很吃力?_第2张图片

JS

  • js的基本类型有哪些?引用类型有哪些?null和undefined的区别。
  • 如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)
  • Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?
  • JS常见的dom操作api
  • 解释一下事件冒泡和事件捕获
  • 事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?
  • 对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?
  • this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?
  • call,apply,bind
  • 显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链
  • 创建对象的多种方式
  • 实现继承的多种方式和优缺点
  • new 一个对象具体做了什么
  • 手写Ajax,XMLHttpRequest
  • 变量提升
  • 举例说明一个匿名函数的典型用例
  • 指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?
  • attribute和property的区别
  • document load和document DOMContentLoaded两个事件的区别
  • === 和 == , [] === [], undefined === undefined,[] == [], undefined == undefined
  • typeof能够得到哪些值
  • 什么是“use strict”,好处和坏处
  • 函数的作用域是什么?js 的作用域有几种?
  • JS如何实现重载和多态
  • 常用的数组api,字符串api
  • 原生事件绑定(跨浏览器),dom0和dom2的区别?
  • 给定一个元素获取它相对于视图窗口的坐标
  • 如何实现图片滚动懒加载
  • js 的字符串类型有哪些方法? 正则表达式的函数怎么使用?
  • 深拷贝
  • 编写一个通用的事件监听函数
  • web端cookie的设置和获取
  • setTimeout和promise的执行顺序
  • JavaScript 的事件流模型都有什么?
  • navigator对象,location和history
  • js的垃圾回收机制
  • 内存泄漏的原因和场景
  • DOM事件的绑定的几种方式
  • DOM事件中target和currentTarget的区别
  • typeof 和 instanceof 区别,instanceof原理
  • js动画和css3动画比较
  • JavaScript 倒计时(setTimeout)
  • js处理异常
  • js的设计模式知道那些
  • 轮播图的实现,以及轮播图组件开发,轮播10000张图片过程
  • websocket的工作原理和机制。
  • 手指点击可以触控的屏幕时,是什么事件?
  • 什么是函数柯里化?以及说一下JS的API有哪些应用到了函数柯里化的实现?(函数柯里化一些了解,以及在* 函数式编程的应用,最后说了一下JS中bind函数和数组的reduce方法用到了函数柯里化。)
  • JS代码调试


    前端开发两年,你有没有觉得很吃力?_第3张图片

面试题完整文档划到文末直接免费领取。

框架

  • 使用过哪些框架?
  • zepto 和 jquery 是什么关系,有什么联系么?
  • jquery源码如何实现选择器的,为什么$取得的对象要设计成数组的形式,这样设计的目的是什么
  • jquery如何绑定事件,有几种类型和区别
  • 什么是MVVM,MVC,MVP
  • Vue和Angular的双向数据绑定原理
  • Vue,Angular组件间通信以及路由原理
  • react和vue的生命周期
  • react和vue的虚拟dom以及diff算法
  • vue的observer,watcher,compile
  • react和angular分别用在什么样的业务吗?性能方面和MVC层面上的区别
  • jQuery对象和JS的Element有什么区别
  • jQuery对象是怎么实现的
  • jQuery除了它封装了一些方法外,还有什么值得我们去学习和使用的?
  • jQuery的$(‘xxx’)做了什么事情
  • 介绍一下bootstrap的栅格系统是如何实现的
前端开发两年,你有没有觉得很吃力?_第4张图片

浏览器相关

  • 跨域,为什么JS会对跨域做出限制
  • 前端安全:xss,csrf...
  • 浏览器怎么加载页面的?script脚本阻塞有什么解决方法?defer和async的区别?
  • 浏览器强缓存和协商缓存
  • 浏览器的全局变量有哪些
  • 浏览器同一时间能够从一个域名下载多少资源
  • 按需加载,不同页面的元素判断标准
  • web存储、cookies、localstroge等的使用和区别
  • 浏览器的内核
  • 如何实现缓存机制?(从200缓存,到cache到etag再到)
  • 说一下200和304的理解和区别
  • 什么是预加载、懒加载
  • 一个 XMLHttpRequest 实例有多少种状态?
  • dns解析原理,输入网址后如何查找服务器
  • 服务器如何知道你?
  • 浏览器渲染过程
  • ie的某些兼容性问题
  • session
  • 拖拽实现
  • 拆解url的各部分
前端开发两年,你有没有觉得很吃力?_第5张图片

面试题完整文档划到文末直接免费领取。

ES6

  • 谈一谈 promise
  • 所有的 ES6 特性你都知道吗?如果遇到一个东西不知道是 ES6 还是 ES5, 你该怎么区分它
  • es6的继承和es5的继承有什么区别
  • promise封装ajax
  • let const的优点
  • es6 generator 是什么,async/await 实现原理
  • ES6和node的commonjs模块化规范区别
  • 箭头函数,以及它的this

计算机网络

  • HTTP协议头含有哪些重要的部分,HTTP状态码
  • 网络url输入到输出怎么做?
  • 性能优化为什么要减少 HTTP 访问次数?
  • Http请求的过程与原理
  • https(对是https)有几次握手和挥手?https的原理。
  • http有几次挥手和握手?TLS的中文名?TLS在哪一网络层?
  • TCP连接的特点,TCP连接如何保证安全可靠的?
  • 为什么TCP连接需要三次握手,两次不可以吗,为什么
  • 为什么tcp要三次握手四次挥手?
  • tcp的三次握手和四次挥手画图(当场画写ack 和 seq的值)?
  • tcp与udp的区别
  • get和post的区别?什么情况下用到?
  • http2 与http1 的区别?
  • websocket
  • 什么是tcp流,什么是http流
  • babel是如何将es6代码编译成es5的
  • http2的持久连接和管线化
  • 域名解析时是tcp还是udp
  • 域名发散和域名收敛
  • Post一个file的时候file放在哪的?
  • HTTP Response的Header里面都有些啥?

工程化

  • 对webpack,gulp,grunt等有没有了解?对比。
  • webpack的入口文件怎么配置,多个入口怎么分割。
  • webpack的loader和plugins的区别
  • gulp的具体使用。
  • 前端工程化的理解、如何自己实现一个文件打包,比如一个JS文件里同时又ES5 和ES6写的代码,如何编译兼容他们

模块化

  • 对AMD,CMD,CommonJS有没有了解?
  • 为什么要模块化?不用的时候和用RequireJs的时候代码大概怎么写?
  • 说说有哪些模块化的库,有了解过模块化的发展的历史吗?
  • 分别说说同步和异步模块化的应用场景,说下AMD异步模块化实现的原理?
  • 如何将项目里面的所有的require的模块语法换成import的ES6的语法?
  • 使用模块化加载时,模块加载的顺序是怎样的,如果不知道,根据已有的知识,你觉得顺序应该是怎么样的?

Nodejs

  • 对nodejs有没有了解
  • Express 和 koa 有什么关系,有什么区别?
  • nodejs适合做什么样的业务?
  • nodejs与php,java有什么区别
  • Nodejs中的Stream和Buffer有什么区别?
  • node的异步问题是如何解决的?
  • node是如何实现高并发的?
  • 说一下 Nodejs 的 event loop 的原理

数据结构

  • 基本数据结构:(数组、队列、链表、堆、二叉树、哈希表等等)
  • 8种排序算法,原理,以及适用场景和复杂度
  • 说出越多越好的费波拉切数列的实现方法?

性能优化

  • cdn的用法是什么?什么时候用到?
  • 浏览器的页面优化?
  • 如何优化 DOM 操作的性能
  • 单页面应用有什么SEO方案?
  • 单页面应用首屏显示比较慢,原因是什么?有什么解决方案?

其他

  • 正则表达式
  • 前端渲染和后端渲染的优缺点
  • 数据库的四大特性,什么是原子性,表的关系
  • 你觉得前端体系应该是怎样的?
  • 一个静态资源要上线,里面有各种资源依赖,你如何平稳上线
  • 如果要你去实现一个前端模板引擎,你会怎么做
  • 知道流媒体查询吗?
  • SEO
  • mysql 和 mongoDB 有什么区别?
  • restful的method解释
  • 数据库知识、操作系统知识
  • click在ios上有300ms延迟,原因及如何解决
  • 移动端的适配,rem+媒体查询/meta头设置
  • 移动端的手势和事件;
  • unicode,utf8,gbk编码的了解,乱码的解决

三面、四面常问的开放性问题

  • 你都看过什么书?最近在看什么书?
  • 用过什么框架?有没有看过什么框架的代码?
  • 有没有学过设计模式?
  • 说一说观察者模式吧!能不能写出来?
  • 你最大的优点是什么?那你最大的缺点呢?
  • 你大学期间做过最疯狂的事情是什么?
  • 你除了写博客还有什么输出?
  • 现在你的领导给你了一份工作,要求你一个星期完成,但你看了需求以后估计需要3周才能完成,你该怎么办?
  • 平时关注的前端技术
  • 如何规划自己的职业生涯
  • 项目过程中,有遇到什么问题吗?怎么解决的?
  • 最近在研究哪方面的东西?
  • 请介绍一项你最热爱、最擅长的专业领域,并且介绍的学习规划。
  • 请介绍你参与的印象最深刻的一个项目,为什么?并且介绍你在项目中的角色和发挥的作用。

HR面

  • 你为什么要学习前端?
  • 你平时的是怎么学习前端的?有什么输出?
  • 你觉得自己最好的项目是什么?
  • 身边比较佩服的人有什么值得你学习的?你为什么没有跟他们一样?
  • 同事的什么问题会让你接受不了
  • 压力最大的事情是什么?
  • 和同学做过的最好的项目?
  • 身边的朋友通常对你的评价是什么
  • 喜欢什么样的工作氛围
  • 如何看待加班
  • 有没有对象
  • 意向城市
  • 其他的offer
  • 为什么要录取你?
  • 大学里花费时间最多的三件事情
  • 周末都会干什么?
  • 未来职业规划

建议

  • 面试的时候不要表现出自己想创业。敲黑板。

  • 从来没有看过源码的话,建议从jQuery,zepto这之类的源码入手,后期可以了解Vue,React常见的功能的源码思路和实现。

  • 项目经验描述的时候不用太太太详细,拣重点的讲。

如果想获取完整版前端面试题资料,可以加入这边的交流裙,前面:938,中间:051,最后:673,裙里从学生到大佬都有,资源免费分享,不见不散哦!

你可能感兴趣的:(前端开发两年,你有没有觉得很吃力?)