前端知识整理

又到了招聘旺季,互联网寒冬,公司招聘已经停止了好几个月,趁着这次准备面试知识点,也对自己做一个简单的知识点大纲梳理,也算是自己的一次学习计划,希望可以逐步把相关知识点涉及的细节都能逐步更新完善和学习。之前的阿里云忘了续费,内容没备份之前的东西都找不回了,好在域名还在直接换到coding的pages服务,重新开始做些技术相关的记录。

前端面试考察整理

  • 基础前端专业知识
  • 框架能力
  • 进阶:设计模式 安全 性能 模块 工程 等
  • 大前端:Node native
  • 解决问题的能力 (一个人的不同点就来自于你解决问题的能力)
  • 学新能力
  • 团队协作沟通和管理经验

整理了一些问题的维度和大的知识点,以及目的,方便在面试的时候使用,自己每次会控制在40分钟 - 1小时,下面的问题作为参考,实际主要看简历面试者会什么


考察点:工作经验

问题:

  • 做过的大项目有哪些? 项目中担任的角色 ? 遇到问题一般如何解决
  • 团队规模? 合作人员 ?
  • 使用相关的技术栈?解决了什么问题?

目的:

考察工作经验是否符合目前的工作,以及在开场先介绍一些自己比较熟悉的东西,容易打开思路吧,也可以判断出之前在团队内说承担的角色,决定后面问题的一些偏重点。


考察点:基础专业知识

问题:

CSS

  • 基础的局部结构实现,各种居中,左右等高等 -> flex ?
  • 移动端适配 -> 各种css单位的差别?-> css预处理和postcss?
  • 清除浮动 -> BFC
  • 性能优化方面 -> 重绘 重流 -> 如何触发和优化 -> 动画trans … anmiation .. 硬件加速 >* 3d 动画
  • 移动端常见的问题 -> 如何解决的 -> 自适应 、0.5像素 、移动端无click、tap ?

JS

  • 数据类型? -> 深浅克隆
  • es6 class 继承,可以顺带下原型(不做重点)
  • 作用域 -> 作用域链 -> 闭包 -> 应用(节流,防抖 区别实现)
  • this 上下文 -> 改变this指向的方法 (bind call apply。) -> 箭头函数 (babel实现)> 实现一个(bind 、call…)?
  • js运行时 Event loop -> 微/宏任务 -> 异步编程
  • 模块化 (es common ,理解区别)、组件化
  • 跨域?jsonp ?正则?图片宽高获取?跨浏览器tab通信?
  • 事件(冒泡、捕获)-> 委托 -> jquery实现(委托事件怎么做到可以阻止冒泡)
  • 输入url到浏览器渲染过程? -> 渲染过程怎么优化
  • js es6 7 (let const? 箭头函数 ? promise async ?代理?反射?装饰器 ?)
  • Promise 并发?继发?并发允许失败n次 ? -> 手撸
  • 面向对象 函数式 柯里化 ?
  • 开发调试:手段 -> 方法 -> 工具 -> 实例 ?
  • 规范标准:编码规范 个人习惯

目的:

考察专业基础知识


考察点:框架能力

jQuery Vue/react

  • jQuery事件代理,拿元素宽高 隐藏元素 ,ajax
  • Vue 生命周期,各个阶段能做什么 -> 父子嵌套,生命周期怎么触发
  • 响应式数据设计(Proxy ?defindProperty) ,Virtual dom ,双向绑定 ,diff 算法,patchs 更新;
  • 路由,状态管理 -> 常用插件(lazyloader)-> 实现原理
  • 日常开发中怎么选定框架?如何权衡?为什么 ?

目的:

考察常用框架能力,原理性了解情况


考察点:前端进阶能力

http

  • 握手?缓存 ?各种头?相应? 状态码?http2 ?

性能

  • 首屏 ?加载速度 ?执行效率 ? 用户体验 ? -> 如何优化,和实践结果

安全

  • XSS攻击,注入恶意代码 ?
  • CSRF 跨站请求伪造 防护 ?

数据结构和算法

  • 常见数据结构 -> 队列 堆 栈 树 -> 应用 -> 队列实现常用的递归调用等
  • 算法 -> 时间复杂度是啥 -> 排序 ?(冒泡、快排、插值 )二分查找 -> 斐波那契数列 -> 执行效率 ?更优?加缓存 ?

工程 (gulp webpack rollup …)

  • 前端工程 构建,兼容性,持续集成 -> 部署 、优化等
  • webpack -> 构建优化 -> 资源提取优化 -> 遇到的问题如:css资源提取问题 -> 速度优化;
  • npm 脚手架

大前端

  • node -> Koa 、 Express
  • 后端技术 、数据库
  • native ( react native , weex ) ssr -> 同构

开放性问题

  • 循环一棵树 -> 递归 优化,非递归方案
  • 设计一套错误和性能收集上报系统
  • 说说自己实现的比较有趣或者成就感的东西

目的:

考察前端 安全 性能等进阶能力


考察点:团队能力和个人价值

  • 沟通?清晰 有条理的表达自己?
  • 能管理多个项目,并进行关键技术攻关?
  • 主导或带领小型团队完成过项目?

目的:考察团队协助和个人在团队内的贡献方面


考察点:学习创新

  • 最近学习的技术 ?在项目中是否有应用 ?
  • 对前端的前景看法? 是否有明确的学习计划?
  • 了解的新技术?使用它们解决了什么问题?

目的:是否具备较好的学习创新能力,以及做到学以致用而不只是学


考察点:团队管理

  • 是否带过团队?团队规模?什么方法保证了人员协作?
  • 怎么去提升团队的开发效率和开发质量?
  • 遇到的棘手问题?如何解决?
  • 比如目前项目要一直加班,团队成员都很不耐烦了,你会怎么处理

目的:考察面试者在团队管理的经验和能力,是否能带来较好的管理方法


考察点:期望发展

  • 喜欢/不喜欢什么样的团队 ?
  • 喜欢/不喜欢什么样的管理风格 ?
  • 对新工作,最看重的方面?
  • 接下来的发展规划和自我定位?
  • 为什么选择跨境电商行业?
  • 为什么选择来我们公司面试?

目的:判断面试者的期望和规划是否与公司提供的相符合,和团队及工作的适配都如何


面试者问答