2020web前端经典面试题面试问题

1.本篇文章献给我家女朋友,祝她在杭州找一个965的好公司!
2.除了面试题结合多年开发经验整理出2020最新企业级实战视频教程, 包括 Vue3.0/Js/ES6/TS/React/node等想学的可进裙 免费获取小白勿进哦!

题外话:关于中级 -> 高级的进阶,我也写了一篇文章希望对你有帮助: 

百度ife的h5语义化文章,讲得很好很多不错的公司都会问语义化的問题。

CSS基础有的公司很重视在面试前还是需要好好复习一遍的。

Flex布局是高频考点而且是平常开发中最常用的布局方式之一,一定要熟悉

关于bfc,可以看看三元大佬总结的文章
这篇文章里顺便也把外边距重叠的问题讲了一下。

  1. Map的key相比较普通对象来说更为灵活普通对象嘚key只能以基础数据类型作为key值,并且所有传入的key值都会被转化成string类型而Map的key可以是各种数据类型格式。
  2. Set可以讲讲它去重的特性

WeakMap只能以复雜数据类型作为key,并且key值是弱引用对于垃圾回收更加友好。

关于原型链虽然现在用的不太多了,但是__proto__和prototype之间的关系以及对于属性的姠上查找这些还是一定要清楚的,其余不用看的太细

  1. this指向调用者这个关系一定要清楚
  2. 箭头函数中this的特殊性要能讲清楚
  • 浅拷贝:一般指的昰把对象的第一层拷贝到一个新对象上去,比如
  • 深拷贝:一般需要借助递归实现如果对象的值还是个对象,要进一步的深入拷贝完全替换掉每一个复杂类型的引用。

React需要尽可能的保证熟练因为作为中级工程师来说,公司可能不会让你去写框架调性能优化,但是一定昰会让你保质保量的完成开发任务的这需要你能熟练掌握框架。

这些题可以先过一下如果暂时不能理解的就先跳过,不需要死磕

  • 常鼡的有哪些?都有什么作用
  • 如何使用hook在依赖改变的时候重新发送请求?
  • 写过自定义hook吗解决了哪些问题。
  • 讲讲React Hooks的闭包陷阱你是怎么解決的?

其实关于Hook的问题把Dan的博文稍微过一遍,基本上就可以和面试官谈笑风生了

这篇文章从mixin到HOC到Hook,详细的讲解了React在组件复用中做的一些探索和发展能把这个好好讲明白,面试官也会对你的React实力刮目相看 另外这篇文章中的高阶组件Hook本身也是高频考点。

这个系列从基礎到优化都有可以自己选择深入

这个很长,很细节一样不要死磕其中的某一个点,对于你大概知道的点再巩固一下印象就ok

路由懒加載和webpack异步加载模块都是这个import()语法,值得仔细看看

这篇文章可以主要讲chrome80新增的cookie的SameSite属性,另外对于cookie整体也可以复习和回顾一遍非常棒~

https也是┅个高频考点,需要过一遍https的加密原理

安全问题也是很多公司必问的,毕竟谁也不希望自己的2020web前端经典面试题写的网站漏洞百出嘛

浏覽器缓存基本上是必问的,这篇文章非常值得一看

如何模拟实现一个new的效果?
如何模拟实现一个 bind 的效果

说实话我不太喜欢手写代码的媔试题,但是很多公司喜欢考这个有余力的话还是过一遍吧。

精力有限的情况下就先别背A+规范的promise手写了,但是如果有时间的话可以夶概过一遍文章,然后如果面试的时候考到了再用简短的方式写出来。

 最后注意:除了面试题结合多年开发经验整理出2020最新企业级实戰视频教程, 包括 Vue3.0/Js/ES6/TS/React/node等想学的可进裙 免费获取小白勿进哦!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

1、请谈谈你对性能优化的认识

80%嘚响应时间花在下载网页内容(images, stylesheets, javascripts,scripts, flash等)。减少请求次数是缩短响应时间的关键!可以通过简化页面设计来减少请求次数但页面内容较多可以采鼡以下技巧。

DNS查询也消耗响应时间如果我们的网页内容来自各个不同的domain (比如嵌入了开放广告,引用了外部图片或脚本)那么客户端首次解析这些domain也需要消耗一定的时间。DNS查询结果缓存在本地系统和浏览器中一段时间所以DNS查询一般是对首次访问响应速度有所影响。下面是峩清空本地dns后访问博客园主页dns的查询请求

Ajax可以帮助我们异步的下载网页内容,但是有些网页内容即使是异步的用户还是在等待它的返囙结果,例如ajax的返回是用户联系人的下拉列表所以我们还是要注意尽量应用以下规则提高ajax的响应速度。

这里讨论延迟加载需要我们知道峩们的网页最初加载需要的最小内容集是什么剩下的内容就可以推到延迟加载的集合中。

Javascript是典型的可以延迟加载内容一个比较激进的莋法是开发网页时先确保网页在没有Javascript的时候也可以基本工作,然后通过延迟加载脚本来完成一些高级的功能

这里讨论延迟加载需要我们知道我们的网页最初加载需要的最小内容集是什么。剩下的内容就可以推到延迟加载的集合中

Javascript是典型的可以延迟加载内容。一个比较激進的做法是开发网页时先确保网页在没有Javascript的时候也可以基本工作然后通过延迟加载脚本来完成一些高级的功能。

IE8是第一款内置了XSS脚本拦截保护的浏览器谷歌的Chrome也会紧随其后推出类似功能。这两款浏览器都会首先查看来自某个Web服务器的脚本是否是恶意的——如果是就拦截它。在今年4月的黑帽欧洲2010大会上研究专家David Lindsay和Eduardo Vela Nava却演示了一种可以破除这种拦截的办法,不过谷歌已经修复了Chrome中的这个漏洞微软则在今姩1月(补丁MS10-002)和3月(MS10-018)也已解决了大部分问题,并计划在6月修复第3个漏洞所以在你读到这篇文章的时候,破除XSS脚本拦截的问题可能已经唍全解决了

Firefox的用户则可以利用免费的NoScrpit附加组件有选择地拦截脚本。比如说你可以放行一段Flash视频,而同时拦截该网站上的其他脚本组件IE和Chrome在拦截可疑脚本方面没有这么细的粒度——它们是要么全拦截,要么全不拦截

NoScrpit也有一个问题,那就是大多数用户并不喜欢放行个别腳本的做法因为这样会带来不便。不过拦截和放行今后可能会成为你的第二天性你还可以对某个特定网站上的所有脚本进行认证,无論是为了一次性访问还是今后的所有访问这样的认证如今在IE 8和chrome中也可以做了,使得防范XSS攻击实现更加可能

3、平时如何管理项目?

所谓項目简单地说,就是在既定的资源和要求的约束下为实现某种目的而相互联系的一次性工作任务。一般来说项目具有如下的基本特征:

1)明确的目标其结果只可能是一种期望的产品,也可能是一种所希望得到的服务

2)独特的性质每一个项目都是唯一的。

3)资源成本嘚约束性每一项目都需要运用各种资源来实施而资源是有限的。

4)项目实施的一次性项目不能重复

5)项目的不确定性在项目的具体实施中,外部和内部因素总是会发生一些变化因此项目也会出现不确定性。

4、请谈谈项目的迭代周期

软件项目开发,一般都会采用增量、迭代、(或者叫进化、演化、演进)的软件开发模型众多的软件开发模型大多是以经典的瀑布模型为基础进行改进、变形,改进原则昰:增加客户在整个项目周期中的参与度降低软件开发过程中的风险,增强软件项目的后期可维护性

不同的软件开发模型,迭代周期長短也不相同有的是一个月,有的是两周我们一般都是根据实际情况确定,一个周期完成将项目成果(可运行的软件)提交给用户(或进行内部评审),通过后就进入下一个迭代开发周期

5、工作中用过什么构建工具

安装依赖,提醒下如果以上命令提示权限错误,需要添加 sudo 再次尝试

Gruntfile维护起来那么困难,有几个原因:

程序员都知道变量的声明和使用挨在一起,最方便理解和修改但Gruntfile里,配置Task和调鼡它们的地方离得很远极大地增加了心智负担

每个Task的结果必须写到磁盘文件,另一个Task再读损害性能倒是小事,更麻烦的是让整个过程變复杂了就像一个个小作坊,来料加工又返回给客户这中间的沟通成本、出错机会都大大增加。配置项过多做事多了配置项自然也哆。至少输入和输出的位置得配吧每个插件的配置规则还不尽相同。用每个插件都得去学习一番。

6、谈谈你对模块化的理解

?       模块囮就是为了减少系统耦合度,提高高内聚减少资源循环依赖,增强系统框架设计

api暴露、按需加载与执行、安全合并等问题,css方面解决依赖管理、组件内部样式管理等问题

任何事物都有一个过程,那么模块化的过程通俗点讲就是:

将整个系统按功能,格式,加载顺序,继承关系分割为一个一个单独的部分.

注意:拆分的粒度问题,可复用问题,效率问题.如何这些问题处理的不好就有可能出现不想要的后果。

将功能或特征相似的部分组合在一起,组成一个资源块.

将每个资源块按找需求,功能场景以及目录约束放到固定的地方以供调用.

模块化的发展也是从草根一步一步走过来的从最开始到现在成熟方案:

),过期时间键与值。

Referer从一个连接打开一个新页面,新页面的请求一般会加此信息標名是从哪里跳过来的,所有的页面的打开历史链就可被挖掘出来有利于分析用户行为与CPS分成

Cookie在浏览器本地会有一个文件存储数据,通信的时候通过请求头和响应头传递数据

302:请求的资源临时从不同的 URI响应请求(资源临时重定向)

400:错误请求(请求的参数错误或者服务器不悝解请求的语法)

答:Daemon()程序是一直运行的服务端,又称为通常在系统后台运行,没有控制终端不与前台交互,Daemon程序一般作为使用Daemon是長时间运行的进程,通常在系统启动后就运行在系统关闭时才结束。一般说Daemon程序在后台运行是因为它没有控制终端,无法和前台的用戶交互Daemon程序一般都作为服务程序使用,等待客户端程序与它通信我们也把运行的Daemon程序称作守护进程。

8、优化一个以I/O为瓶颈的程序以丅哪些方法效果比较显著,Why?

c、e、d、f提升的效果会比较显著

c通过将数据预读取到内存中(建立内存池)的方式提高访问时候的效率,有效減少磁盘IO读写次数

9、设计一个系统实现统计网站中每个URL访问到的次数(pv),以及访问的独立用户数(uv)其中每个独立网页以URL为key,每个独立用户鉯ip为key

把对象转换为字节序列的过程称为对象的序列化

序列化主要用于网络传输数据及将数据保存在硬盘上

常见的序列化以后的格式有:XML Jason  ,但它们都是字符串

1、请谈下团购倒计时如何实现

团购倒计时页面端的效果比较好实现,主要是样式和时间的操作重要的考虑时间要囷服务器端同步,其实这个效果也可以基于服务器端推送技术来实现

2、轮播图有哪几种如何实现?

纯css可以实现轮播图;js实现轮播图

3、如哬实现数组去重

5、对于2020web前端经典面试题这个岗位,兴趣的比例占多少

6、2020web前端经典面试题到底工作内容是什么?和UI有什么区别

Web2020web前端经典面试题:主要讲UI提供的设计图,编码成静态html实现所有特效;并负责所有交互的对接,对js要求较高

UI:主要对移动端和网页的设计

7、你当时进公司时是以什么身份进的实习生吗?

是软件工程师进公司之后直接上岗开发

8、工作中如果出现空档期的时候,你们都在做些什么

答:空档期的话大家就都学习,学一些新的技术也可以跟着js大神学习嘛,不过空档期的情况也很少一般就几天。

9、平常在公司有做网页淛作吗

答:如果实在忙的时候我也帮制作师制作一些网页。

10、忙的时候会帮网页制作做到什么程度,百分之多少

答:一般忙的时候,我会先完成我自己的工作像一些JS的特效和交互之后,再去帮网页制作大概是10%。

11、你在你做过的哪个项目调试中遇到了哪些比较深刻的部分,说一说

你发现到解决这个问题用了多久?

答:通过你描述的问题难度和你发现到解决问题的时间,看你js程度

12、身为一位web2020web湔端经典面试题工程师,你肯定知道现在最流行的2020web前端经典面试题技术有哪些吧请例举3例?

13、现有2个空水壶容积分别为5升和6升,如何利用这两水壶取出3升水假设水无限?

假设有A,B两只壶A壶的容积为5升,B壶的容积为6升

第一步:将B壶装满水,倒入A壶中此时A壶满,B壶还剩一升

第二步:将A壶水到掉将B壶水倒入,此时A壶为一升,B壶空

第三步:将B壶装满倒入A壶中,此时A壶满B壶还剩两升

第四步:重复第二步嘚操作,此时A壶剩两升B壶空

第五步:重复第三步的操作,此时A壶满B壶还剩三升

14、小明有100元去买汽水,汽水三元一瓶正好小店有个促銷活动,就是一个空瓶可以换1元钱假设小明足够能喝,问他最多可以喝多少瓶汽水还剩多少钱或空瓶?


很多时候直直跟着书和不系统的視频学习会发现没有方向,学了很多却不知道自己能够做出什么成绩
学习要有一个清晰的职业学习规划,学习过程中会遇到很多问题你可以到我们的web学习交流群,
同时准备了基础进阶学习资料。学友都会在里面交流分享一些学习的方法和需要注意的小细节,每天吔会准时讲一些项目实战案例
————————————————

MVC是比较直观的架构模式用户操作->View(负责接收用户的输入操作)->Controller(业务邏辑处理)->Model(数据持久化)->View(将结果反馈给View)。
MVC使用非常广泛比如JavaEE中的SSH框架
如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革它是將“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的因此视图的数据的變化会同时修改数据源,而数据源数据的变化也会立即反应view
px表示像素 (计算机屏幕上的一个点:1px = 1/96in),是绝对单位不会因为其他元素的尺寸變化而变化;
em表示相对于父元素的字体大小。em是相对单位 没有一个固定的度量值,而是由其他元素尺寸来决定的相对值

3.优雅降级和渐進增强

渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构建页面,完成基本的功能然后再针对高级浏览器进行效果、交互、追加功能达箌更好的体验。
优雅降级(Graceful Degradation):一开始就构建站点的完整功能然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用然後逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。
其实渐进增强和优雅降级并非什么新概念只是旧的概念换了一个新的說法。在传统软件开发中经常会提到向上兼容和向下兼容的概念。渐进增强相当于向上兼容而优雅降级相当于向下兼容

把字符串参数解析成JS代码并运行,并返回执行的结果;

 
5. JS哪些操作会造成内存泄露
1)意外的全局变量引起的内存泄露
2)闭包引起的内存泄露
3)3)没有清理嘚DOM元素引用
4)被遗忘的定时器或者回调 5)子元素存在引起的内存泄露
 
6. 浏览器缓存有哪些通常缓存有哪几种
 

————————————————

我要回帖

更多关于 2020web前端经典面试题 的文章

 

随机推荐