前端面试instanceof_[面试分享] 我的学妹去字节跳动了

大学实验室带的学妹去字节跳动了,周末跟学妹交流了一番,决定把之前面试遇到的题目分享出来。阿里、腾讯、Shopee、七牛云、京东、等系列企业,战绩也都很不错
文章末尾我会简单分享一下,之前是如何带学妹一步步升级打怪的,以及前端一个整体的学习曲线。当然主要还是学妹 ↓↓↓ 自己给力,我也只是打打辅助。

f2a6c24f3593a478cdd897fb096a1b19.png

之前怪怪还是后端的时候,其实也带过几个前端,不过那时候毕竟是后端,不专业,所以当时那几个小伙伴找工作相对吃力一点,不过现在大家都有了比较好的归宿。有在滴滴的,有在完美世界的,有在。。。
怪怪把学妹面过的所有题目,进行了一个分类汇总如下:

HTML(5)

  • HTML语义化的理解
  • DOCTYPE的作用
  • 标准模式与怪异模式的区别
  • 说一下文档流
  • 行内元素、块级元素、行内块级元素、空元素
  • html5的新特性
  • 描述 cookies,sessionStorage 和 localStorage 的区别
  • iframe 内嵌框架有那些缺点
  • 说一下 webWorker、 webSocket

CSS

  • 三栏布局写一下
  • 垂直水平居中写一下
  • transform讲一下
  • 平常实现动画是怎么去实现的
  • flex有哪些属性
  • 盒模型: 标准模型与IE模型
  • 权重问题
  • css选择符有哪些
  • css中哪些属性可以被继承:字体系列font-family、font-size、font-weight等;文本系列:list-style、list-style-color等;文本系列:text-align、color、line-height等
  • box-sizing常用的属性
  • link与@import区别
  • a标签的4个伪类的正确顺序,并解释
  • 清除浮动的方式
  • position的属性值:static、relative、absolute(脱离文档流)、fixed(脱离文档流);absolute相对定位的
  • z-index:只对脱离文档流的元素有效
  • flex布局: 父元素设为Flex布局后,子元素的float、clear、vertical-align属性将失效。
  • BFC、触发条件、可解决的问题
  • IFC是什么
  • 两栏布局:float + margin; calc; position + margin(或者transform) ;flex等
  • 三栏布局:float + margin; position + margin; flex; 圣杯;双飞翼等
  • 如何实现水平垂直居中
  • 伪类和伪元素的区别: 伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档树外的元素
  • 浏览器是怎样解析 CSS 选择器的?(从右向左)
  • px、em、rem的区别
  • CSS创建一个三角形
  • CSS 动画 与 js 动画区别
  • CSS3新特性:圆角(border-radius)、阴影(box-shadow)、动画、渐变(gradient)、转换(transform:translate / scale/ skew)
  • CSS3新增伪类

JavaScript (es5、es6)

  • js原型、原型链
  • instanceof 方法讲一下
  • 类型判断的几种方法
  • 判断是否为数组的几种方式
  • 作用域链讲一下
  • 手写一个闭包
  • 讲一下工作中哪些地方用到了闭包
  • 对js语言的看法,特点,优缺点
  • promise的实现
  • 数组map forEach自己实现
  • 实现并发函数,函数参数为 urls (请求列表数组)、max(最大并发数量) 、fn(回调),请求都成功执行回调
  • 函数柯理化
  • js数据类型
  • 数据类型的内存图
  • var a = 1; a = “str”; a 的内存空间如何变化
  • =====的区别
  • null 和 undefined 的区别
  • 原型、原型链
  • 作用域、作用域链
  • 闭包及其作用
  • 使用闭包实现每秒打印1,2,3,4
  • 继承的几种方式、寄生组合继承的实现
  • es6 继承与es5 继承的区别
  • 箭头函数与普通函数的区别
  • this的理解
  • call、apply、bind的区别
  • 深浅拷贝
  • 事件流、事件委托(事件委托我们可以不必要为每一个子元素都绑定一个监听事件,这样减少了内存上的消耗)
  • js 延迟加载的方式
  • ajax是什么?
  • 浏览器和 Node.js 的事件循环机制有什么区别?
  • 同步与异步、宏任务与微任务
  • 模块规范(commonJS、es6 、AMD、CMD)
  • typeof NaN 的结果是什么、isNaN与Number.isNaN函数的区别
  • 如何判断变量类型
  • js 的节流与防抖
  • 布尔类型的值的转换规则 :假值(undefined、null、false、+0 、-0、""、NaN)
  • {} 和 [] 的 valueOf 和 toString 的结果是什么
  • js 类数组的定义、类数组如何转换为数组
  • 如何判断数组
  • JavaScript 与 Java 的区别
  • js 的垃圾回收 与 v8 的垃圾回收
  • 哪些操作会照成内存泄漏
  • 0.1 + 0.2 != 0.3 如何解决
  • 图片懒加载与预加载
  • JavaScript 中数组是如何存储的?
  • JavaScript 中的数组为什么可以不需要分配固定的内存空间?(追加)
  • JavaScript 中数组的存储和 C / C++ / Java 中数组的存储有什么区别?(追加)
  • let 、const 与 var的区别
  • Iterator和for…of
  • Symbol 类型
  • Set 与 WeakSet 、Map 与 WeakMap
  • 什么是 Proxy
  • 说一说 promise?promise的各种api
  • Generator及其异步方面的应用
  • 说一说 async / await
  • class基本语法及继承

手写原理

  • new 操作符具体干了什么
  • instanceof 的实现
  • 实现原生ajax
  • 原生jsonp
  • 实现 call、apply、bind
  • 实现节流与防抖
  • 实现深浅拷贝
  • 实现函数柯里化
  • 实现数组去重
  • 实现数组扁平化

数据结构与算法
实习、校招前端算法,后面专门出一篇文章来讲。

  • 基本算法思想:双指针、排序、分冶、动态规划、二叉树、链表、栈和队列等要了解,以及对应的时间复杂度和空间复杂度
  • 算法实习不会太难,像动态规划,都是比较基础的动态规划
  • 基本上市 LeetCode 上简单、以及部分中等中偏简单的题

前端框架
其实大厂实习框架问的很少很少,校招可能会问的稍微多点,毕竟校招的时候你已经具备一定的实习经验了Vue

  • 双向绑定原理
  • Vue生命周期
    • 资源请求一般在哪个生命周期
    • 还有哪些生命周期可以请求资源
  • 单变量对应多视图Vue怎样去更新状态
  • Vuex中的几种状态
  • MVVM 模式的优缺点,与 MVC 的区别
  • 一般在哪个生命周期里请求接口
  • Vue 的组件通信
  • Vue 中是如何检测数组的变化
  • Vue 组件中的data为什么要写成函数形式
  • nextTick 是做什么用的,其原理是什么
  • Vue 的模板编译原理
  • computed 与 watch 的差异
  • vue-router 中的导航钩子
  • vue-router的两种模式
  • Vue中 key 值的作用
  • Vue中常见的修饰符
  • Vue中常用的指令
  • v-show 与 v-if 的区别
  • keep-alive 组件的作用
  • Vue的虚拟dom
  • Vue 中的slot 与 slot-scope

React

  • setState原理以及为啥是异步
  • diff 算法
  • 生命周期
  • hooks

浏览器

  • 浏览器缓存
  • 浏览器的同源策略
  • 跨域
  • 浏览器的渲染
  • 回流为什么比重绘更消耗性能
  • 浏览器的进程与线程
  • cookie、session、token的区别
  • 输入url 后发生了什么

Webpack
实习 Webpack 问的也很少。。。校招会问问。

  • Webpack 是什么?
  • Webpack 与 gulp 的区别?
  • Webpack 构建流程
  • Webpack 的优化
  • 热更新的原理
  • loader 与 plugins 的区别
  • 常用的 loader 与 plugin
  • 是否自己写过loader 或者 plugin

计算机基础
网络比重最大,毕竟前端跟网络打交道相对最多

  • UDP和TCP区别讲一下
  • 跨域的几种实现方式
  • 网站的本地缓存
  • TCP/IP 四层模型 、OSI七层模型、每一层的有哪些常见的协议
  • TCP 与 UDP 的区别
  • TCP 的 三次握手与四次挥手(为什么是三次? 为什么是四次?)
  • TCP 的 流量控制与拥塞控制
  • TCP 可靠传输
  • TCP 滑动窗口
  • HTTP 的请求方法
  • GET 与 POST的区别
  • HTTP 常见的请求头
  • HTTP 状态码
  • HTTP 报文格式
  • HTTP1.0 、HTTP1.1 、HTTP 2.0
  • HTTP 与 HTTPS 的区别 、HTTPS的握手过程
  • HTTPS中的三个随机数是如何生成会话密钥的
  • HTTP 缓存:强缓存与协商缓存
  • 进程、线程
  • 进程之间的通信方式
  • 线程的哪些资源共享?哪些资源不共享
  • 死锁

安全

  • XSS 攻击及如何防范
  • CSRF 攻击及如何防范

升级打怪、学习曲线
很多大学生最关心的问题,就是我要怎么学,我学习的路径是怎么样的
先说一下大学的课程,高数、线性代数、计网、操作系统、计组、编译原理、数据结构这几门课如果有,一定要好好学,至少保证上课的时候是在状态的。别问为什么,因为重要啊!!这些东西长远来看,决定了你以后能走多远

第一阶段
HTML、CSS、JavaScript(es5)第二阶段
JavaScript(es6)、前端框架(大厂相对偏向 React.js 多点)第三阶段
项目实战第四阶段
这里注意一下,实习要早一点开始准备简历,面试啥的。很多企业大三上结束的那个假期就已经开始招人了,怪怪就是那个时候面的,大三下开学不久就出来实习了。


总结,准备简历、准备面试相关题目、技能

其它
日常算法积累、Git工具使用、Node.js了解、自己多看看一些文章、博客啥的,多了解。


有的人看到这个曲线,可能会说,怎么这么简单,那怪怪在这里解释一下。
之所以没有把技能写的很细,是觉得学习关键还是要靠自己去看,去了解。整体曲线,4个阶段,没毛病。


比如,第二阶段,学习框架的时候。比如Vue.js,可能这个时候就要牵扯出一系列的技术栈,比如npm、Webpack打包、Node.js的作用等。
不想把曲线写的那么死,毕竟学习是一个很灵活的事情,你去企业工作也要不断的学习。互联网时代,只要你想学,都没啥大问题,好吧。
当然,有想了解学习阶段细节的小伙伴,也可以加怪怪微信一起探讨。

小结

  • 面试题仅做参考,学习是自己的事情,不要把希望寄托在别人身上。
  • 找工作的时候名校确实会占据一定的优势,但并不是决定性因素~
  • 乘风破浪会有时,直挂云帆济沧海 。愿小伙伴们最终都能有一个理想的归宿
自学前端到什么程度,可以去找工作呢?​www.zhihu.com
b8c314cd7e62972c4795dec06414e22b.png
作者:接水怪
链接: https:// juejin.im/post/68851084 20169433096
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值