前端面试需要知道的知识 17题(非原创)

我是大自然的搬运工

1、w3c标准有哪些

1.结构标准,代表语言是xHTML

2.表现标准,代表语言是CSS

3.动作标准,代表语言是JavaScrip

  • 例如

    1.同一个页面当中,同名的ID会产生冲突。所以以ID定义样式的必须改成类引用。

    2.所有的标签都使用小写。

    3.JS和CSS外部引入文件必须加上类型定义。就是type属性必须填写

2、移动端不同浏览器之间的差异

有点多,详看参考链接 https://blog.csdn.net/zytyxz/article/details/78492428

3、react和vue之间的区别

  • 1.监听数据变化的实现原理不同
    Vue通过 getter/setter以及一些函数的劫持,能精确知道数据变化。

    React默认是通过比较引用的方式(diff)进行的,如果不优化可能导致大量不必要的VDOM的重新渲染。为什么React不精确监听数据变化呢?这是因为Vue和React设计理念上的区别,Vue使用的是可变数据,而React更强调数据的不可变,两者没有好坏之分,Vue更加简单,而React构建大型应用的时候更加鲁棒。

  • 2.数据流的不同
    Vue1.0中可以实现两种双向绑定:父子组件之间,props可以双向绑定;组件与DOM之间可以通过v-model双向绑定。Vue2.x中去掉了第一种,也就是父子组件之间不能双向绑定了(但是提供了一个语法糖自动帮你通过事件的方式修改),并且Vue2.x已经不鼓励组件对自己的 props进行任何修改了。

    React一直不支持双向绑定,提倡的是单向数据流,称之为onChange/setState()模式。不过由于我们一般都会用Vuex以及Redux等单向数据流的状态管理框架,因此很多时候我们感受不到这一点的区别了。

  • 3.模板渲染方式的不同
    模板的语法不同,React是通过JSX渲染模板。而Vue是通过一种拓展的HTML语法进行渲染

    模板的原理不同,React是在组件JS代码中,通过原生JS实现模板中的常见语法,比如插值,条件,循环等,都是通过JS语法实现的,更加纯粹更加原生。而Vue是在和组件JS代码分离的单独的模板中,通过指令来实现的,比如条件语句就需要 v-if 来实现对这一点,这样的做法显得有些独特,会把HTML弄得很乱

  • 4,渲染过程不同
    Vue可以更快地计算出Virtual DOM的差异,这是由于它在渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。

    React在应用的状态被改变时,全部子组件都会重新渲染。通过shouldComponentUpdate这个生命周期方法可以进行控制,但Vue将此视为默认的优化。

  • 5.框架本质不同
    Vue本质是MVVM框架,由MVC发展而来;

    React是前端组件化框架,由后端组件化发展而来。
    ————————————————
    版权声明:本文为CSDN博主「秦罹」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_26190177/article/details/93741368

4、es规范是什么

太多了
请看下面的链接
https://yq.aliyun.com/articles/617716?utm_content=m_1000007931

5、http https协议是什么

基本概念
  • HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  • HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

6、区块链是什么

  • 每个记录,就是一个区块(block),会盖上时间戳,每个新产生的区块严格按照时间线形顺序推进,形成不可逆的链条(chain),所以叫做区块链(Blockchain)。


    image
  • 而且每个区块都含有其上一个区块的哈希值,确保区块按照时间顺序连接的同时没有被篡改。
  • 区块链是一种分布式数据库,是一串使用密码学方法相关联产生的数据块,每个数据块都包含了一次网络交易信息,用于验证其信息的有效性和生成下一个区块。
  • 核心内容:
    1、去中心化,这是区块链颠覆性特点,不存在任何中心机构和中心服务器,所有交易都发生在每个人电脑或手机上安装的客户端应用程序中。实现点对点直接交互,既节约资源,使交易自主化、简易化,又排除被中心化代理控制的风险。
    2、开放性,区块链可以理解为一种公共记账的技术方案,系统是完全开放透明的,账簿对所有人公开,实现数据共享,任何人都可以查账。
    3、不可撤销、不可篡改和加密安全性

7、tcp/ip的工作原理是什么

  • 传输控制协议(TCP)是一种网络通信协议,旨在通过Internet发送数据包。TCP是OSI层中的传输层协议,用于通过传输和确保通过支持网络和Internet传递消息来在远程计算机之间创建连接
  • TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。
  • 不懂看链接吧https://blog.csdn.net/xk7298/article/details/80557346

8、前端工程化、模块化、组件化的理解和总结

  • :前端工程化就是用做工程的思维看待和开发自己的项目,而不再是直接撸起袖子一个页面一个页面开写
  • 模块化开发,一个模块就是一个实现特定功能的文件,有了模块我们就可以更方便的使用别人的代码,要用什么功能就加载什么模块。
  • 组件化
    ①页面上的每个独立的、可视/可交互区域视为一个组件;
    ②每个组件对应一个工程目录,组件所需的各种资源都在这个目录下就近维护;
    ③由于组件具有独立性,因此组件与组件之间可以 自由组合;
    ④页面只不过是组件的容器,负责组合组件形成功能完整的界面;
    ⑤当不需要某个组件,或者想要替换组件时,可以整个目录删除/替换。

组件化将页面视为一个容器,页面上各个独立部分例如:头部、导航、焦点图、侧边栏、底部等视为独立组件,不同的页面根据内容的需要,去盛放相关组件即可组成完整的页面。

模块化开发的4点好处:

1 避免变量污染,命名冲突

2 提高代码复用率

3 提高维护性

4 依赖关系的管理

加载模块

这是一个模块

var name = 'Byron';  
  
function printName(){  
    console.log(name);  
}  
  
function printFullName(firstName){  
    console.log(firstName + name);  
}  
  
module.exports = {  
    printName: printName,  
    printFullName: printFullName 

然后加载模块

var nameModule = require('./myModel.js');
nameModule.printName();

参考链接
https://www.cnblogs.com/angel648/p/11370327.html

9、如何进行webpack打包编译

10、浏览器运行原理

  • 3.1渲染引擎

渲染引擎在浏览器窗口中显示所请求的内容,浏览器内核分成两部分:渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎,所以渲染引擎也称为浏览器内核。渲染引擎一开始会从网络层获取请求文档的内容,通常以8K分块的方式完成。 获取了文档内容之后,渲染引擎开始正式工作,其基本流程如图所示:
渲染引擎解析HTML文档,并将文档中的标签转化为DOM节点树,即” 内容树” 。 同时,它也会解析外部CSS文件以及style标签中的样式数据。 这些样式信息连同HTML中的” 可见内容” 一道,被用于构建另一棵树——” 渲染树(Render树)” 。 渲染树构建完毕之后,将会进入” 布局” 处理阶段,即为每一个节点分配一个屏幕坐标。 再下一步就是绘制(painting),即遍历render树,并使用UI后端层绘制每个节点。

注意:这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局渲染树。 它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。

DOM:文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。 在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。
渲染引擎解析:
解析一个文档即将其转换为具有一定意义的结构——编码可以理解和使用的东西。 解析的结果通常是表达文档结构的节点树,称为解析树或语法树。

  • 3.1.3 CSS解析
    css属于上下文无关文法,可以用前面所描述的解析器来解析。 Css规范定义了css的词法及语法文法。 每个符号都由正则表达式定义了词法(词汇表),语法用BNF(由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集)进行描述。
    Webkit使用Flex和Bison解析生成器从CSS语法文件中自动生成解析器。
  • 3.2 JS引擎

JS引擎是一个专门处理JS脚本的虚拟机,专门设计来解释和执行的 JavaScript 代码。 JS引擎会加载你的源代码,把它分解成字符串,把这些字符串转换成编译器可以理解的字节码,然后执行这些字节码。不同浏览器有不同的JS引擎

  • 前端处理流程简介

这个流程大家可以参考网上很多人总结的各个版本的从输入一个url到看到页面,发生了什么过程。在这里我用自己的话简单概括为以下几点(仅供参考,欢迎指正):

1、输入url

2、查看浏览器缓存,看是否有缓存,如果有缓存,继续查看缓存是否过期,如果没有过期,直接返回缓存页面,如果没有缓存或者缓存过期,发送一个请求。

3、浏览器解析url地址,获取协议、主机名、端口号和路径。

4、获取主机ip地址过程

(1)浏览器缓存

(2)主机缓存

(3)hosts文件

(4)路由器缓存

(5)DNS缓存

(6)DNS递归查询

5、浏览器发起和服务器的TCP连接,执行三次握手(略)

6、三次握手连接后,浏览器发送一个http请求(这部分是重点,请查询相关资料,详细了解http协议关于请求格式和重要的几个请求头字段含义)。

7、服务器收到请求,转到相关的服务程序,期间可能需要连接并操作数据库(主要分get和post请求)。

8、服务器看是否需要缓存,服务器处理完请求,发出一个响应(这部分也是重点,请查询资料了解http响应头各个字段的含义)

9、服务器并根据请求头包含信息决定是否需要关闭TCP连接(如需关闭,则需要四次挥手过程)

10、浏览器对接收到的响应进行解码

11、浏览器解析收到的响应并根据响应的内容(假如是HTML文件)进行构建DOM树,构建render树,渲染render树等过程

12、处理嵌入的其他资源如css文件、js文件、图片文件、音视频等文件,处理过程类似上面的步骤在此不详述。

————————————————
版权声明:本文为CSDN博主「CoolSummmer」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014744118/article/details/80698602

11、轮播图原理

  • 基本功能
    自动无缝滚动
    左右按钮控制滚动
    点击圆点切换图片
  • 思路:
    1、首先要有个盛放图片的容器,设置为单幅图片的宽高,且overflow:hidden,这样保证每次可以只显示一个图片
    2、container内有个放图片的list进行position的定位 ,其中的图片采用float的方式,同时当图片进行轮播时,改变list的Left值使得其显示的图片发生变化。
    3、图片的轮播使用定时器,通过定时器改变list的Left值是的图片循环展示
    4、当鼠标滑动到图片上时,清除定时器,图片停止轮播,当鼠标移出时继续进行轮播
    5、图片上有一组小圆点用于与当前显示的图片相对应,同时可以通过点击的方式查看对应的图片
    6、图片可以通过点击pre,next进行左右滑动显示
    代码:
    ————————————————
    版权声明:本文为CSDN博主「My-Lady」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/heshan1992/article/details/77504204
    参考链接https://blog.csdn.net/weixin_30314793/article/details/101831477?utm_source=distribute.pc_relevant.none-task

12、知道react的新属性和新特性吗

1 react的三大属性 state props refs
  • props 来自外部属性
  • states 来自内部状态
  • refs 用于表示组件内某个元素
新特性
  • Context
  • ContextType
  • lazy
  • Suspense
  • 错误边界(Error boundaries)
  • memo

13、什么是响应式布局

  • 响应式布局:一个网站能够兼容多个终端,实现不同屏幕分辨率的终端上浏览网页的不同展示方式。就是一个网站能够兼容多个终端,而不是为了每一个终端做一个特定的版本。响应式根据媒体查询做不同的布局。
  • 自适应式布局:能忘了使网页自适应的显示在不同大小终端设备上的新网页设计方式及技术,它需要开发多套界面来适应不同的终端。
响应式布局与自适应布局的区别是什么?

1.自适应布局通过检测视口分辨率,来判断当前访问的设备是:pc端、平板、手机,从而请求服务层,返回不同的页面;响应式布局通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容。

2.自适应布局需要开发多套界面,而响应式布局只需要开发一套界面就可以了。

3.自适应对页面做的屏幕适配是在一定范围:比如pc端一般要大于1024像素,手机端要小于768像素。而响应式布局是一套页面全部适应。

4.自适应布局如果屏幕太小会发生内容过于拥挤。而响应式布局正是为了解决这个问题而衍生出的概念,它可以自动识别屏幕宽度并做出相应调整的网页设计。

总之,响应式布局还是要比自适应布局要好一点,但是自适应布局更加贴切实际,因为你只需要考虑几种状态就可以了而不是像响应式布局需要考虑非常多状态。所以的说无论哪种设计都有它们各自的特点,我们要根据项目的需求来选择适合的布局方式。
可参考链接https://blog.csdn.net/gertyy/article/details/52764527

14、web性能优化、安全有什么见解

  • web性能优化前端篇 参考链接
    1).尽可能减少HTTP请求次数
    2).使用CDN
    3).避免使用src和href标签
    4).加入Expires或Cache-Control Header
    5).使用Gzip压缩
    6).在html文件顶部放置Css样式表
    7).在html文件底部放置JavaScript脚本
    8).避免使用CSS表达式
    9).使用外部CSS和JavaScript外部文件
    10).减少使用DNS查找次数
    11).精简CSS和JavaScript
    12).避免重向定
    13).移除重复的脚本
    14).配置ETag
    15).缓存AJAX
    16).使用GET完成AJAX请求
    17).减少DOM元素的数量
    18).避免404
    19).减少Cookie大小
    20).使用无Cookie的域
    21).避免使用滤镜
    22).不要在HTML中缩放图片
    23).使用小favicon.icon文件,并让其可缓存

作者:人总要靠自己_趁年轻去努力
链接:https://www.jianshu.com/p/abec4f7780e5

15、react-router路由是什么

16、单页面应用和多页面应用的区别

[图片上传失败...(image-4db1f7-1582195554567)]

  • 多页面 :
    每一次页面跳转的时候,后台服务器都会返回一个新的html文档,这种类型的网站就是多页网站,也叫多页应用
    优点是:首屏时间快,seo效果好;缺点是:页面切换慢;
  • 单页面:
    第一次进入页面的时候会请求一个html文件,刷新点击一下会切换到其他组件,此时路径也相应的变化,但是并没有新的html文件的请求,页面内容发生变化。
    原理是:js会感知到url的变化,通过这一点,可以用js动态的将当前的页面内容清除掉,然后将下一个页面的内容挂载到当前的页面上。这个时候路由不是后端来做了,而是前端来做,判断页面到底是显示那个组件,清楚不需要的,显示需要的组件。这种过程就是单页应用,每次跳转不请求html文件了。{页面跳转——>js渲染}

优点是:页面切换快;缺点是:首屏时间稍慢,SEO差;(请与单页面应用优缺点对比理解)

17、xss攻击和防范

  • 指恶意攻击者往web页面里插入html代码,当用户浏览该页时,嵌入其中的html代码会被执行,从而达成恶意用户的特殊目的。
  • XSS攻击类型
    反射型XSS攻击:浏览器——>后端——>浏览器
    存储型XSS攻击:浏览器——>后端——>数据库——>后端——>浏览器
    DOMBasedXSS(基于dom的跨站点脚本攻击):URL-->浏览器
  • XSS防范
    我们经常用<script>alert(1)</script>检测是不是有XSS漏洞,一旦弹出了1就说明有,那么我们该如何防范呢?
    1.对用户输入进行检查,检查敏感字符,替换敏感字符
    2.后端对输入参数进行过滤,过滤敏感字符,替换敏感字符
    可参考https://www.cnblogs.com/meituantech/p/9718677.html
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容