欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【面试】2018大厂高级前端面试题汇总

程序员文章站 2022-06-30 19:38:44
面试的公司分别是:阿里、网易、滴滴、今日头条、有赞、挖财、沪江、饿了么、携程、喜马拉雅、兑吧、微医、寺库、宝宝树、海康威视、蘑菇街、酷家乐、百分点和海风教育。 阿里 使用过的koa2中间件 koa-body原理 介绍自己写过的中间件 有没有涉及到Cluster 介绍pm2 master挂了的话pm2 ......
面试的公司分别是:阿里、网易、滴滴、今日头条、有赞、挖财、沪江、饿了么、携程、喜马拉雅、兑吧、微医、寺库、宝宝树、海康威视、蘑菇街、酷家乐、百分点和海风教育。 

阿里

  • 使用过的koa2中间件

  • koa-body原理

  • 介绍自己写过的中间件

  • 有没有涉及到cluster

  • 介绍pm2

  • master挂了的话pm2怎么处理

  • 如何和mysql进行通信

  • react声明周期及自己的理解

  • 如何配置react-router

  • 路由的动态加载模块

  • 服务端渲染ssr

  • 介绍路由的history

  • 介绍redux数据流的流程

  • redux如何实现多个组件之间的通信,多个组件使用相同状态如何进行管理

  • 多个组件之间如何拆分各自的state,每块小的组件有自己的状态,它们之间还有一些公共的状态需要维护,如何思考这块

  • 使用过的redux中间件

  • 如何解决跨域的问题

  • 常见http请求头

  • 移动端适配1px的问题

  • 介绍flex布局

  • 其他css方式设置垂直居中

  • 居中为什么要使用transform(为什么不使用marginleft/top)

  • 使用过webpack里面哪些plugin和loader

  • webpack里面的插件是怎么实现的

  • dev-server是怎么跑起来

  • 项目优化

  • 抽取公共文件是怎么配置的

  • 项目中如何处理安全问题

  • 怎么实现this对象的深拷贝

 

网易

  • 介绍redux,主要解决什么问题

  • 文件上传如何做断点续传

  • 表单可以跨域吗

  • promise、async有什么区别

  • 搜索请求如何处理(防抖)

  • 搜索请求中文如何请求

  • 介绍观察者模式

  • 介绍中介者模式

  • 观察者和订阅-发布的区别,各自用在哪里

  • 介绍react优化

  • 介绍http2.0

  • 通过什么做到并发请求

  • http1.1时如何复用tcp连接

  • 介绍service worker

  • 介绍css3中position:sticky

  • redux请求中间件如何处理并发

  • 介绍promise,异常捕获

  • 介绍position属性包括css3新增

  • 浏览器事件流向

  • 介绍事件代理以及优缺点

  • react组件中怎么做事件代理

  • react组件事件代理的原理

  • 介绍this各种情况

  • 前端怎么控制管理路由

  • 使用路由时出现问题如何解决

  • react怎么做数据的检查和变化

 

滴滴

  • react-router怎么实现路由切换

  • react-router里的<link>标签和<a>标签有什么区别

  • <a>标签默认事件禁掉之后做了什么才实现了跳转

  • react层面的性能优化

  • 整个前端性能提升大致分几类

  • import { button } from 'antd',打包的时候只打包button,分模块加载,是怎么做到的

  • 使用import时,webpacknode_modules里的依赖会做什么

  • js异步解决方案的发展历程以及优缺点

  • http报文的请求会有几个部分

  • cookie放哪里,cookie能做的事情和存在的价值

  • cookietoken都存放在header里面,为什么只劫持前者

  • cookiesession有哪些方面的区别

  • reactdom结构发生变化后内部经历了哪些变化

  • react挂载的时候有3个组件,textcomponent、composecomponent、domcomponent,区别和关系,dom结构发生变化时怎么区分data的变化,怎么更新,更新怎么调度,如果更新的时候还有其他任务存在怎么处理

  • key主要是解决哪一类的问题,为什么不建议用索引index(重绘)

  • redux中异步的请求怎么处理

  • redux中间件是什么东西,接受几个参数(两端的柯里化函数)

  • 柯里化函数两端的参数具体是什么东西

  • 中间件是怎么拿到store和action,然后怎么处理

  • state是怎么注入到组件的,从reducer到组件经历了什么样的过程

  • koa中response.send、response.rounded、response.json发生了什么事,浏览器为什么能识别到它是一个json结构或是html

  • koa-bodyparser怎么来解析request

  • webpack整个生命周期,loader和plugin有什么区别

  • 介绍ast(abstract syntax tree)抽象语法树

  • 安卓activity之间数据是怎么传递的

  • 安卓4.0到6.0过程中webview对js兼容性的变化

  • webview和原生是如何通信

  • 跨域怎么解决,有没有使用过apache等方案

 

今日头条

  • 对async、await的理解,内部原理

  • 介绍下promise,内部实现

  • 清除浮动  

  • 定位问题(绝对定位、相对定位等)

  • 从输入url到页面加载全过程

  • tcp3次握手

  • tcp属于哪一层(1 物理层 -> 2 数据链路层 -> 3 网络层(ip)-> 4 传输层(tcp) -> 5 应用层(http))

  • redux的设计思想

  • 接入redux的过程

  • 绑定connect的过程

  • connect原理

  • webpack介绍

  • == 和 ===的区别,什么情况下用相等==

  • bind、call、apply的区别

  • 动画的了解

  • 介绍下原型链(解决的是继承问题吗)

  • 对跨域的了解

 

有赞

  • linux 754 介绍

  • 介绍冒泡排序,选择排序,冒泡排序如何优化

  • transform动画和直接使用left、top改变位置有什么优缺点

  • 如何判断链表是否有环

  • 介绍二叉搜索树的特点

  • 介绍暂时性死区

  • es6中的map和原生的对象有什么区别

  • 观察者和发布-订阅的区别

  • react异步渲染的概念,介绍time slicing 和 suspense

  • 16.x声明周期的改变

  • 16.x中props改变后在哪个生命周期中处理

  • 介绍纯函数

  • 前端性能优化

  • purecomponent和functioncomponent区别

  • 介绍jsx

  • 如何做rn在安卓和ios端的适配

  • rn为什么能在原生中绘制成原生组件(bundle.js)

  • 介绍虚拟dom

  • 如何设计一个localstorage,保证数据的实效性

  • 如何设计promise.all()

  • 介绍高阶组件

  • sum(2, 3)实现sum(2)(3)的效果

  • react性能优化

  • 两个对象如何比较

 

挖财

  • js的原型

  • 变量作用域链

  • call、apply、bind的区别

  • 防抖和节流的区别

  • 介绍各种异步方案

  • react生命周期

  • 介绍fiber

  • 前端性能优化

  • 介绍dom树对比

  • react中的key的作用

  • 如何设计状态树

  • 介绍css,xsrf

  • http缓存控制

  • 项目中如何应用数据结构

  • native提供了什么能力给rn

  • 如何做工程上的优化

  • shouldcomponentupdate是为了解决什么问题

  • 如何解决props层级过深的问题

  • 前端怎么做单元测试

  • webpack生命周期

  • webpack打包的整个过程

  • 常用的plugins

  • pm2怎么做进程管理,进程挂掉怎么处理

  • 不用pm2怎么做进程管理

 

沪江

  • 介绍下浏览器跨域

  • 怎么去解决跨域问题

  • jsonp方案需要服务端怎么配合

  • ajax发生跨域要设置什么(前端)

  • 加上cors之后从发起到请求正式成功的过程

  • xsrf跨域攻击的安全性问题怎么防范

  • 使用async会注意哪些东西

  • async里面有多个await请求,可以怎么优化(请求是否有依赖)

  • promise和async处理失败的时候有什么区别

  • redux在状态管理方面解决了react本身不能解决的问题

  • redux有没有做过封装

  • react生命周期,常用的生命周期

  • 对应的生命周期做什么事

  • 遇到性能问题一般在哪个生命周期里解决

  • 怎么做性能优化(异步加载组件...)

  • 写react有哪些细节可以优化

  • react的事件机制(绑定一个事件到一个组件上)

  • 介绍下事件代理,主要解决什么问题

  • 前端开发中用到哪些设计模式

  • react/redux中哪些功能用到了哪些设计模式

  • js变量类型分为几种,区别是什么

  • js里垃圾回收机制是什么,常用的是哪种,怎么处理的

  • 一般怎么组织css(webpack)

 

饿了么

  • 小程序里面开页面最多多少

  • react子父组件之间如何传值

  • emit事件怎么发,需要引入什么

  • 介绍下react高阶组件,和普通组件有什么区别

  • 一个对象数组,每个子对象包含一个id和name,react如何渲染出全部的name

  • 在哪个生命周期里写

  • 其中有几个name不存在,通过异步接口获取,如何做

  • 渲染的时候key给什么值,可以使用index吗,用id好还是index好

  • webpack如何配sass,需要配哪些loader

  • 配css需要哪些loader

  • 如何配置把js、css、html单独打包成一个文件

  • div垂直水平居中(flex、绝对定位)

  • 两个元素块,一左一右,中间相距10像素

  • 上下固定,中间滚动布局如何实现

  • [1, 2, 3, 4, 5]变成[1, 2, 3, a, b, 5]

  • 取数组的最大值(es5、es6)

  • apply和call的区别

  • es5和es6有什么区别

  • some、every、find、filter、map、foreach有什么区别

  • 上述数组随机取数,每次返回的值都不一样

  • 如何找0-5的随机数,95-99呢

  • 页面上有1万个button如何绑定事件

  • 如何判断是button

  • 页面上生成一万个button,并且绑定事件,如何做(js原生操作dom)

  • 循环绑定时的index是多少,为什么,怎么解决

  • 页面上有一个input,还有一个p标签,改变input后p标签就跟着变化,如何处理

  • 监听input的哪个事件,在什么时候触发

 

携程

  • 对react看法,有没有遇到一些坑

  • 对闭包的看法,为什么要用闭包

  • 手写数组去重函数

  • 手写数组扁平化函数

  • 介绍下promise的用途和性质

  • promise和callback有什么区别

  • react生命周期

  • 两道手写算法题

 

喜马拉雅

  • es6新的特性

  • 介绍promise

  • promise有几个状态

  • 说一下闭包

  • react的生命周期

  • componentwillreceiveprops的触发条件是什么

  • react16.3对生命周期的改变

  • 介绍下react的filber架构

  • 画filber渲染树

  • 介绍react高阶组件

  • 父子组件之间如何通信

  • redux怎么实现属性传递,介绍下原理

  • react-router版本号

  • 网站seo怎么处理

  • 介绍下http状态码

  • 403、301、302是什么

  • 缓存相关的http请求头

  • 介绍https

  • https怎么建立安全通道

  • 前端性能优化(js原生和react)

  • 用户体验做过什么优化

  • 对pwa有什么了解

  • 对安全有什么了解

  • 介绍下数字签名的原理

  • 前后端通信使用什么方案

  • restful常用的method

  • 介绍下跨域

  • access-control-allow-origin在服务端哪里配置

  • csrf跨站攻击怎么解决

  • 前端和后端怎么联调

 

兑吧

  • localstorage和cookie有什么区别

  • css选择器有哪些

  • 盒子模型,以及标准情况和ie下的区别

  • 如何实现高度自适应

  • prototype和——proto——区别

  • _construct是什么

  • new是怎么实现的

  • promise的精髓,以及优缺点

  • 如何实现h5手机端的适配

  • remflex的区别(root em)

  • empx的区别

  • react声明周期

  • 如何去除url中的#号

  • redux状态管理器和变量挂载到window中有什么区别

  • webpack和gulp的优缺点

  • 如何实现异步加载

  • 如何实现分模块打包(多入口)

  • 前端性能优化(1js css;2 图片;3 缓存预加载; 4 ssr; 5 多域名加载;6 负载均衡)

  • 并发请求资源数上限(6个)

  • base64为什么能提升性能,缺点

  • 介绍webp这个图片文件格式

  • 介绍koa2

  • promise如何实现的

  • 异步请求,低版本fetch如何低版本适配

  • ajax如何处理跨域

  • cors如何设置

  • jsonp为什么不支持post方法

  • 介绍同源策略

  • react使用过的一些组件

  • 介绍immuable

  • 介绍下redux整个流程原理

  • 介绍原型链

  • 如何继承

 

微医

  • 介绍js数据类型,基本数据类型和引用数据类型的区别

  • array是object类型吗

  • 数据类型分别存在哪里

  • var a  = {name: "前端开发"}; var b = a; a = null那么b输出什么

  • var a = {b: 1}存放在哪里

  • var a = {b: {c: 1}}存放在哪里

  • 栈和堆的区别

  • 垃圾回收时栈和堆的区别

  • 数组里面有10万个数据,取第一个元素和第10万个元素的时间相差多少

  • 栈和堆具体怎么存储

  • 介绍闭包以及闭包为什么没清除

  • 闭包的使用场景

  • js怎么实现异步

  • 异步整个执行周期

  • promise的三种状态

  • async/await怎么实现

  • promise和settimeout执行先后的区别

  • js为什么要区分微任务和宏任务

  • promise构造函数是同步还是异步执行,then呢

  • 发布-订阅和观察者模式的区别

  • js执行过程中分为哪些阶段

  • 词法作用域和this的区别

  • 平常是怎么做继承

  • 深拷贝和浅拷贝

  • loadsh深拷贝实现原理

  • es6中let块作用域是怎么实现的

  • react中setstate后发生了什么

  • setstate为什么默认是异步

  • setstate什么时候是同步的

  • 为什么3大框架出现以后就出现很多native(rn)框架(虚拟dom)

  • 虚拟dom主要做了什么

  • 虚拟dom本身是什么(js对象)

  • 304是什么

  • 打包时hash码是怎么生成的

  • 随机值存在一样的情况,如何避免

  • 使用webpack构建时有无做一些自定义操作

  • webpack做了什么

  • a,b两个按钮,点击aba,返回顺序可能是baa,如何保证是aba(promise.then)

  • node接口转发有无做什么优化

  • node起服务如何保证稳定性,平缓降级,重启等

  • rn有没有做热加载

  • rn遇到的兼容性问题

  • rn如何实现一个原生的组件

  • rn混原生和原生混rn有什么不同

  • 什么是单页项目

  • 遇到的复杂业务场景

  • promise.all实现原理

 

寺库

  • 介绍promise的特性,优缺点

  • 介绍redux

  • rn的原理,为什么可以同时在安卓和ios端运行

  • rn如何调用原生的一些功能

  • 介绍rn的缺点

  • 介绍排序算法和快排原理

  • 堆和栈的区别

  • 介绍闭包

  • 闭包的核心是什么

  • 网络的五层模型

  • http和https的区别

  • https的加密过程

  • 介绍ssl和tls

  • 介绍dns解析

  • js的继承方法

  • 介绍垃圾回收

  • cookie的引用为了解决什么问题

  • cookie和localstorage的区别

  • 如何解决跨域问题

  • 前端性能优化

 

宝宝树

  • 使用canvas绘图时如何组织成通用组件

  • formdata和原生的ajax有什么区别

  • 介绍下表单提交,和formdata有什么关系

  • 介绍redux接入流程

  • rudux和全局管理有什么区别(数据可控、数据响应)

  • rn和原生通信

  • 介绍mvp怎么组织

  • 介绍异步方案

  • promise如何实现then处理

  • koa2中间件原理

  • 常用的中间件

  • 服务端怎么做统一的状态处理

  • 如何对相对路径引用进行优化

  • node文件查找优先级

  • npm2和npm3+有什么区别

 

海康威视

  • knex连接数据库响应回调

  • 介绍异步方案

  • 如何处理异常捕获

  • 项目如何管理模块

  • 前端性能优化

  • js继承方案

  • 如何判断一个变量是不是数组

  • 变量a和b,如何交换

  • 事件委托

  • 多个<li>标签生成的dom结构是一个类数组

  • 类数组和数组的区别

  • dom的类数组如何转成数组

  • 介绍单页面应用和多页面应用

  • redux状态树的管理

  • 介绍localstorage的api

 

蘑菇街

  • html语义化的理解

  • <b><strong>的区别

  • 对闭包的理解

  • 工程中闭包使用场景

  • 介绍this和原型

  • 使用原型最大的好处

  • react设计思路

  • 为什么虚拟dom比真实dom性能好

  • react常见的通信方式

  • redux整体的工作流程

  • redux和全局对象之间的区别

  • redux数据回溯设计思路

  • 单例、工厂、观察者项目中实际场景

  • 项目中树的使用场景以及了解

  • 工作收获

 

酷家乐

  • react生命周期

  • react性能优化

  • 添加原生事件不移除为什么会内存泄露

  • 还有哪些地方会内存泄露

  • setinterval需要注意的点

  • 定时器为什么是不精确的

  • settimeout(1)和settimeout(2)之间的区别

  • 介绍宏任务和微任务

  • promise里面和then里面执行有什么区别

  • 介绍purecomponet

  • 介绍function component

  • react数据流

  • props和state的区别

  • 介绍react context

  • 介绍class和es5的类以及区别

  • 介绍箭头函数和普通函数的区别

  • 介绍defineproperty方法,什么时候需要用到

  • for..in 和 object.keys的区别

  • 介绍闭包,使用场景

  • 使用闭包特权函数的使用场景

  • get和post有什么区别

 

百分点

  • react15/16.x的区别

  • 重新渲染render会做些什么

  • 哪些方法会触发react重新渲染

  • state和props触发更新的生命周期分别有什么区别

  • setstate是同步还是异步

  • 对无状态组件的理解

  • 介绍redux工作流程

  • 介绍es6的功能

  • let、const以及var的区别

  • 浅拷贝和深拷贝的区别

  • 介绍箭头函数的this

  • 介绍promise和then

  • 介绍快速排序

  • 算法:前k个最大的元素

 

海风教育

  • 对react看法,它的优缺点

  • 使用过程中遇到的问题,如何解决的

  • react的理念是什么(拿函数式编程来做页面渲染)

  • js是什么范式语言(面向对象还是函数式编程)

  • koa原理,为什么要用koa(express和koa对比)

  • 使用的koa中间件

  • es6使用的语法

  • promise 和 async/await 和 callback的区别

  • promise有没有解决异步的问题(promise链是真正强大的地方)

  • promise和settimeout的区别(event loop)

  • 进程和线程的区别(一个node实例就是一个进程,node是单线程,通过事件循环来实现异步)

  • 介绍下dfs深度优先

  • 介绍下观察者模式

  • 观察者模式里面使用的数据结构(不具备顺序 ,是一个list)

本文转子 muyiyang_gaoji 微信分享 版权归原创作者。