第一天非常有必要和大家聊的三个话题
1. 大前端时代需要掌握的技术栈
HTML5
https://developer.mozilla.org/zh-CN/docs/Web/Guide/HTML/HTML5
- 语义化标签类
<article></article>、<footer></footer>、<header></header>
- 音视频处理
本次升级最大的亮点就是audio、video,新媒体解决方案代替了传统的flash。这可以说是html5最大的亮点。
canvas / webGL
history API
vue\react框架中做spa单页应用的话会用到路由,路由分为hash和browser,其中browser路由就是利用提供的histor API实现的
- requestAnimationFrame
https://segmentfault.com/a/1190000020639465?utm_source=tag-newest
- 地理位置
getCurrentPosition() 方法来获得用户的位置
- web scoket
………….
CSS3
常规
动画
盒子模型
响应式布局
………….
JavaScript
- ECMAScript 3/5/6/7/8/9
- DOM
- BOM
- 设计模式
- 底层原理
- 堆栈内存
- 闭包作用域 AO/VO/GO/EC/ECSTACK-
- 面向对象OOP
- THI
- EventLoop
- 浏览器渲染原理
- 回流重绘
………….
网络通信层
- AJAX / Fetch / axios
- HTTP1.0 / 2.0
- TCP
- 跨域处理方案
- 性能优化
Hybrid或者APP再或者小程序
- Hybrid
- uni-app
- RN
- Flutter
- 小程序 MPVUE
- Weex
- PWA
…………..
工程化方面
- webpack
- git
- linux / nginx
…………..
全栈方面
- node
- express
- koa2
- mongodb
- nuxt.js / next.js
…………..
框架方面
- Vue
- 基础知识
- 核心原理
- vue-router
- vue-cli
- vuex
- element ui
- vant
- cube
- SSR
- 优化
- React
- 基础知识
- 核心原理
- react-router-dom
- redux
- react-redux
- dva
- umi
- mobix
- antd
- antd pro
- SSR
- 优化
游戏方向
可视化或者AI方向
……………
3. BAT/TMD这种大公司到底是怎样面试的
一个问题就知道你会不会CSS了,( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)
- 什么是标签语义化?
用合理的标签干合适的事情
- 都有哪些标签,都是啥意思?
有块状标签、有行内标签、有行内块状标签,分部是 如下:
- 块级标签和行内标签的区别?
行内元素:相邻的行内元素在同一行,行内元素的宽度、高度、内边距的 top/bottom和外边距的top/bottom都是不可改变的,但 padding 和 margin 的 left 和 right 是可以设置的。常见的行内元素有:span、a、br、em、i… 块级元素:独占一行,他们的宽度、高度、内边距和外边距都可控制。常见的块级元素有:table、form、ul li、div、p、h1-6、article、header、footer….行内块元素(inline-block):即融合了行内元素和块级元素的特性,即在一行显示,又能设置宽高。常见的行内块元素有:img、input、button…..
如何转换
display除了这几个值还有哪些?
display: table
display: flex
- display:none
- 让元素隐藏,你可以怎么做
- display:none和visibility:hidden的区别?
- opacity的兼容处理? (用 filter)
- filter(滤镜)还能做哪些事情? (修改所有图片的颜色为黑白: filter: grayscale(100%);)
- display:flex
- 项目中你什么时候用到了flex
- 除了这种方式能居中还有哪些?
- 响应式布局还可以怎么做?
- 都有哪些盒子模型
o(╥﹏╥)o
好了,咱们换下一个题….
说一下,你自己感觉自己擅长哪些?
(#^.^#) 没事的,在我们眼里,你擅长的点我比你更擅长,如果不是,没关系,后面还有P7/P8们兜着呢!^_^
说一下,这个需求怎么做?
还有吗 ( ̄▽ ̄)/
还有吗 ( ̄▽ ̄)/
……
那说一下,你感觉这几种方式哪个更好,各自有啥问题……
总之一句话,不把你问“死”,算我这次面试失败!!!
“ 在面试介绍的时候要突出自己精心准备的面试题:在哪些公司呆过,自己擅长哪些技术栈,平时有什么爱好,比较擅长原生js,比较擅长promise设计模式 ”
几道前端经典的面试题
1.掌握盒子水平垂直居中的五大方案
- 定位: 三种
第一种:需要知道具体宽高,才能用margin left top设置值
1 | body { |
第二种:有宽高,不需要考虑具体是多少
1 | .box { |
第三种:可以不设置宽高
1 | .box { |
- display: flex
1 | /* 父标签 */ |
- javascript
1 | let HTML = document.documentElement, |
- display: table-cell
1 | body { |
2.关于CSS3中盒模型的几道面试题
- 标准盒子模型
- IE盒子模型(怪异盒子模型)
border
- FLEX盒模型
3.掌握几大经典布局方案
- 圣杯布局
- 双飞翼布局
即 左右固定,中间自适应
这里看有道上面的例子
4.移动端响应式布局开发的三大方案
- media(pc端 + 移动端 用同一套代码时)
- rem (pc端用px ,移动端用rem)
- flex
- vh / vw (相当于百分比,称为百分比布局,vh把视窗高度分为100分,1vh就是1%,vw同理)
课后作业
- 使用css,让一个div消失在视野中,发挥想象力 ?
(display:none; visibility:hidden;它们的区别。透明度opacity又涉及到哪些内容。-margin也可以,-margin涉及到双飞翼出来了) - 请说明z-index的工作原理,适用范围?
- 文档流
- 定位
(这个问题主要问的就是文档流,z-index的原理就是建立不同的文档流,建立文档流不同层级,脱离文档流有几种方式?float、定位、transform、animate css3的transfrom动画为什么好,帧性能的优化点,js动画是要随时改变样式的,会引发很多次回流,css3是会回到最后一帧,只引发一次回流)
3. 谈谈你对HTML5的理解?
如何使一个div里面的文字垂直居中,且该文字的大小根据屏幕大小自适应?
不考虑其它因素,下面哪种的渲染性能比较高?
1 | .box a{ |
css浏览器渲染机制,选择器从右向左查询,第二种只找所有的a,第一种先找所有a,再找box下所有a,渲染了2次,二次筛选。
第二天面试题
- 对象(数组)的深克隆和浅克隆(头条)
1 | let obj = { |
深克隆
1 | //=>深克隆 |
- BAT笔试题中几道关于堆栈内存和闭包作用域的题
1 | let a={}, b='0', c=0; |
如图:
obj里面存{name:’xxx’}转化为”[object Object]”这个字符串,通过toString()转化,可以知道,所有对象,不管存的是什么,toString()之后的结果都是字符串”[object Object]”
堆内存:存储引用类型值的空间;
栈内存:存储基本类型值和执行代码的环境。
1 | var test = (function(i){ |
答案:’4’ alert弹出来的都要转化为字符串
如图:
这里test等于的是一个立即执行函数,所以函数执行,返回一个函数,返回给test的是一个引用地址(十六进制)
在右侧堆中,对象存储是键值对,函数存储的是要执行的代码(以字符串格式),作为对象还存除了prototype length等
闭包不叫内存泄露,只叫保存不销毁
1 | var a=0, b=0; |
1 | let i = 10; |
如图:
‘1’ ‘4’
3.一道关于面向对象面试题所引发的血案(阿里)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
1 | function Foo() { |
变量提升:在当前这个执行上下文中,所有代码执行之前,把所有带var 的提前声明,带function 提前声明+定义(赋值)。
4.一道面试题让你彻底掌握JS中的EventLoop(头条)
1 | async function async1() { |
课后作业
第一题:写出下面代码输出的结果
1 | function A(){ |
第二题:写出下面代码输出的结果
1 | var x=2; |
第三题:写出下面代码输出的结果
1 | var a = ?; |
第四题:写出下面代码输出的结果
1 | var x=0, |
第五题:写出下面代码输出的结果
1 | setTimeout(() => { |