大学实验室带的学妹去字节跳动了,周末跟学妹交流了一番,决定把之前面试遇到的题目分享出来。阿里、腾讯、Shopee、七牛云、京东、等系列企业,战绩也都很不错
文章末尾我会简单分享一下,之前是如何带学妹一步步升级打怪的,以及前端一个整体的学习曲线。当然主要还是学妹 ↓↓↓ 自己给力,我也只是打打辅助。
![f2a6c24f3593a478cdd897fb096a1b19.png](https://i-blog.csdnimg.cn/blog_migrate/0b63fc918bd830e906d9499dd736124e.jpeg)
之前怪怪还是后端的时候,其实也带过几个前端,不过那时候毕竟是后端,不专业,所以当时那几个小伙伴找工作相对吃力一点,不过现在大家都有了比较好的归宿。有在滴滴的,有在完美世界的,有在。。。
怪怪把学妹面过的所有题目,进行了一个分类汇总如下:
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的作用等。
不想把曲线写的那么死,毕竟学习是一个很灵活的事情,你去企业工作也要不断的学习。互联网时代,只要你想学,都没啥大问题,好吧。
当然,有想了解学习阶段细节的小伙伴,也可以加怪怪微信一起探讨。
小结
- 面试题仅做参考,学习是自己的事情,不要把希望寄托在别人身上。
- 找工作的时候名校确实会占据一定的优势,但并不是决定性因素~
- 乘风破浪会有时,直挂云帆济沧海 。愿小伙伴们最终都能有一个理想的归宿
![b8c314cd7e62972c4795dec06414e22b.png](https://i-blog.csdnimg.cn/blog_migrate/acf5935e2f8ee8975d85374be7322973.png)
作者:接水怪
链接: https:// juejin.im/post/68851084 20169433096
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。