记一次前端面试过程与感想

182 阅读5分钟

背景

      周五下午在一个招聘群看到了一个jd,约了周日晚上面试,整个过程大概持续了一个半小时,简单的总结下问到的问题。以及当时的回答,主要是为了复盘下整个过程。

css

1.说下盒模型?

答:分为标准盒模型和怪异盒模型 可以使用box-sizing:border-box触发怪异盒模型

     标准盒模型计算:width+padding+margin+border

     怪异盒模型: 这个记混了 没有答border

2.知道BFC么?

      答: 块级格式上下文

    再问:BFC的作用是什么?

     答:使元素脱离文档流

    再问:常见的BFC有哪些?

     答:float:left; float:right; position:absolute;等

    再问:position有哪几种属性值

     答:relative; absolute; fixed; sticky;等

    再问:position:absolute是相对于谁定位

     答:若父元素设置了相对定位,则相对于父元素定位,若父元素未设置相对定位,则相对于上级元素设置了position:relative;的节点定位,否则相对于body定位。

3.说出水平垂直居中的一种方式

答: 使用定位+负margin的形式

position:absolute;
left:0;
top:0;
margin-left: -(width/2);
margin-top: -(height/2);

js

  1. js基本数据类型有哪些?

    答:undefined、null、 boolean、string、 number (这一块没再说其它的方式)

    问:引用数据类型呢?

    答:Object Array

    问: 基本类型存在于哪里?

    答:栈内存

  2. typeof判断Array会返回什么?

    答: Object

    问: 如何区分它是不是数组?

    答: instanceof

    问: 问为什么用instanceof 可以知道得到数组?

    答:忘记答得啥了 反正没答到点

    问: 有一个 object.xxx.call() 有听过没? [object.prototype.toString.call()]

    答: 知道

  3. 什么是原型?

    答: 每一个构造函数都有一个原型,都会有一个显示的prototype属性, 实例化这个构造函数之后,实例化对象,都会有一个__proto__属性,这个__proto__指向构造函数的prototype。

    问: 什么是原型链?

     答: 在查找函数属性的时候,往往先从本身查找,如果本身没查找到,就会向所指向的构造函数原型去查找,构造函数的原型也没查找到,就会向Object.prototype,如果Object.prototype也没查找到,则指向null 查找结束。

     问: new操作符做了什么事情?

     答: 1.创建对象 2.绑定this 3.返回这个对象

     问: 什么是闭包

     答: 外层函数的变量被内层函数访问 返回内层函数。

     问: 闭包的作用是什么?

     答: 避免全局变量污染

  1. 箭头函数的this指向谁?

     答: 声明时所处的对象 这道题跟对面反复的时间还挺长的 回答不太清晰

  1. let与const与var的区别?

    答: var有声明提声,let与const没有 const 声明的变量不能更改 let可以 let和const有块级作用域

  2. slice的两个参数是什么?

    答: 这里记错了 第二个参数说成了截取长度

  3. call, aplly有什么区别?

    答: 第一个参数是要绑定的对象 call的参数一个个传 apply传入数组

  4. bind?

    这个bind没答好 这里浪费了好长时间

  5. 描述下常见的微任务和宏任务?

    答: 宏任务有: setTimeout setInvertal promise.then

    答: 微任务有: new Promise 执行时语句

  6. promise是为了解决什么问题?

    答: 解决异步问题

    问: async和await解决什么问题?

    答: 解决回调地狱问题

    问: promise的三种状态?

    答: pedning、 fulfilled、rejected

  7. fetch和axios的区别?

    这个没答好 还需再整理 先记录下

  8. 节流与防抖?

    答: 防抖只执行最后一次,节流在特定时间内只执行一次

webpack

  1. 如何避免文件被重复打包

    答:文件提取 css抽离 js抽离

  2. webpack中如何配置cdn路径?

    答: 忘了 想不起来了

  3. 项目有哪些优化手段?

    答了 webapck打包这一块 资源按需加载 对面又举例了 雪碧图 css以及js位置

  4. 知道tree-shinking么?

    答: 摇树 删除程序运行过程中无用的 js css 等资源

  5. 是否自己写过插件?

    答:没有

http

  1. 知道http和https的区别么?

     答的不是很好

     问TCP和UDP?

     这个答得简直惨不忍睹

     问常见的状态码?

     答:分别说了 200 304 400 401 404 500 等

     问:304 协商缓存 和 强缓存?

     这一块没get到他的点 后来跟我说他想知道的是那几个字段

     问: cookie和session的区别

     答: 忘了怎么答的了

     问: 有没有一种长连接的协议

     答: websocket

框架

  1. Vue全局注册一个组件?

    答: Vue.component

  2. vue生命周期?

    ……

其他

  1. 是否优化过工作流?

    ……

  2. 对自己评级?

    ……

结尾

     复盘整个过程, 这是能回忆到的所有问题了,感觉挺累的,面试官可能是前后都懂,也没有每一个都深入,可能感觉到我精神不是很好,提了一点建议,就是面试前保持精神充沛,复盘以上过程,也想总结几点

  1. 面试题可能有你想到的,也可能有你想不到的,还是需要系统复习,自己在下面总以为盒模型不是问题,可是真的就能忘
  2. 面试过程中保持精神集中 不要给面试官一种精神头很不好的感觉,不要流露消极情绪
  3. 平时需系统的整理思路,不要组织语言混乱,虽然你知道那个点。
  4. 补充一点,要举一反三,知道的技术点尽量详细说,不要类似于我,问啥答啥,不大好哦

一篇面经,和一点感想,分享出来,不喜勿喷,另标准答案后期会在git上一个面试的仓库整理出来。

附上仓库地址 一起加油吧!