IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 面试题目整理 -> 正文阅读

[JavaScript知识库]面试题目整理

携程
一面

? 1. 常用的语义化标签

优点

  1. 使代码结构清晰,有利于团队开发。
  2. 便于各种设备解析,如屏幕阅读器等,以语义的方式渲染页面
  3. 利用搜索引擎优化

常见的语义化标签

  • <title>:页面主体内容。
  • <hn>:h1~h6,分级标题,<h1> 与 <title> 协调有利于搜索引擎优化。
  • <header>:页面。通常包括网站标志、主导航、全站链接、搜索框。
  • <nav>:标记导航。仅对页面中重要的链接群使用。
  • <main>:页面主要内容,一个页面只能使用一次。如果是web服务应用,
  • <article>:定义外部的内容,其中的内容独立于文档的其余部分。
  • <section>:定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。
  • <aside>:定义其所处内容之外的内容。如侧栏、文章的一组链接、广告、友情链接、相关产品列表等。
  • <footer>:页脚,只有当父级是body时,才是整个页面的页脚。

? 2. 垂直居中

  • 设置line-height 等于height
  • position:absolute +top:50%+ transform:translateY(-50%)
  • display:flex + align-items: center
  • (父)display:table+ (子)display:table-cell + vertical-align: middle

?3. 清除浮动

  • 设置伪类:clear: both
  • overflow:hidden
  • 父级设置高度

? 4. meta的作用

<meta>?标签提供关于 HTML 文档的元数据。它不会显示在页面上,但是对于机器是可读的。

元数据可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。

meta的必需属性和可选属性

必需属性content

meta的必需属性是content,当然并不是说meta标签里一定要有content,而是当有http-equivname属性的时候,一定要有content属性对其进行说明。例如:

<meta name="keywords" content="HTML,ASP,PHP,SQL">

这里面content里的属性就是对keywords进行的说明,所以呢也可以理解成一个键值对吧,就是{keywords:"HTML,ASP,PHP,SQL"}

可选属性

http-equiv

http-equiv属性是添加http头部内容,对一些自定义的,或者需要额外添加的http头部内容,需要发送到浏览器中,我们就可以是使用这个属性。在上面的meta作用中也有简单的说明,那么现在再举个例子。例如我们不想使用js来重定向,用http头部内容控制,那么就可以这样控制:

<meta http-equiv="Refresh" content="5;url=http://blog.yangchen123h.cn" />

在页面中加入这个后,5秒钟后就会跳转到指定页面啦

name

第二个可选属性是name,这个属性是供浏览器进行解析,对于一些浏览器兼容性问题,name属性是最常用的,当然有个前提就是浏览器能够解析你写进去的name属性才可以,不然就是没有意义的。还是举个例子吧:

<meta name="renderer" content="webkit">

这个meta标签的意思就是告诉浏览器,用webkit内核进行解析,当然前提是浏览器有webkit内核才可以

常用meta标签大总结

接下来就是常用的meta标签大总结啦,我会尽可能的做到全

charset

charset是声明文档使用的字符编码,解决乱码问题主要用的就是它,值得一提的是,这个charset一定要写第一行,不然就可能会产生乱码了。

charset有两种写法

<meta charset="utf-8">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

两个都是等效的。

百度禁止转码

百度会自动对网页进行转码,这个标签是禁止百度的自动转码

<meta http-equiv="Cache-Control" content="no-siteapp" />

SEO 优化部分


<!-- 页面标题<title>标签(head 头部必须) -->
<title>your title</title>
<!-- 页面关键词 keywords -->
<meta name="keywords" content="your keywords">
<!-- 页面描述内容 description -->
<meta name="description" content="your description">
<!-- 定义网页作者 author -->
<meta name="author" content="author,email address">
<!-- 定义网页搜索引擎索引方式,robotterms 是一组使用
英文逗号「,」分割的值,通常有如下几
种取值:none,noindex,nofollow,all,index和follow。 -->
<meta name="robots" content="index,follow">

viewport

viewport主要是影响移动端页面布局的,例如:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

content 参数:

  • width viewport 宽度(数值/device-width)
  • height viewport 高度(数值/device-height)
  • initial-scale 初始缩放比例
  • maximum-scale 最大缩放比例
  • minimum-scale 最小缩放比例
  • user-scalable 是否允许用户缩放(yes/no)

https://blog.csdn.net/weixin_37657720/article/details/80548223


? 5. display和visible

display隐藏后,div不会占用位置

而使用visibility隐藏的div还是占用位置的


? 6. 单例模式和工厂模式的设计模式
? 7. rem
? 8. 一万个请求,后一个请求依赖前一个请求的结果


? 9. promise.all和promise.allSettled,使用promise.all拿到无论是成功还是失败的结果,怎么处理

allSettled的特性与使用:
与Promise.all一样,参数是一组包含Promise实例的数组,返回值是一个新的Promise实例,其实例在调用then方法中的回调函数的参数仍是一个数组。不同之处在于无论参数实例resolve还是reject,Promise.allSettled都会执行then方法的第一个回调函数(意思就是不会catch到参数实例的reject状态),其回调函数的参数返回的数组的每一项是一个包含status和value或者reason的一组对象。status代表对应的参数实例状态值,取值只有fulfilled(resolve状态)和rejected(reject状态),当status的值为rejected,对应的另一个对象属性就是reason了,也就是被reject的原因,而成功返回的status的值则是fulfilled,对应的另一个对象属性便是value,对应的值就是resolve的任意值。


var promise1 = new Promise(function(resolve,reject){
  setTimeout(function(){
    reject('promise1')
  },2000)
})
			
var promise2 = new Promise(function(resolve,reject){
  setTimeout(function(){
    resolve('promise2')
  },3000)
})
 
var promise3 = Promise.resolve('promise3')
 
var promise4 = Promise.reject('promise4')
 
Promise.allSettled([promise1,promise2,promise3,promise4]).then(function(args){
  console.log(args);
  /*
  result: 
  [
    {"status":"rejected","reason":"promise1"}, 
    {"status":"fulfilled","value":"promise2"},
    {"status":"fulfilled","value":"promise3"}, 
    {"status":"rejected","reason":"promise4"}
  ]*/
})


? 10. sessionStorage和localStorage,同个页面能不能拿到sessionStorage

每个页面都有自己独立保存了一份sessionStorage,就算是几个窗口打开同一个页面,每个页面的sessionStorage互不影响。


? 11. http和https的区别

HTTPS和HTTP的主要区别

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

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

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

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

客户端在使用HTTPS方式与Web服务器通信时的步骤

客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

客户端的浏览器与Web服务器开始协商SSL/TLS连接的安全等级,也就是信息加密的等级。

客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

Web服务器利用自己的私钥解密出会话密钥。

Web服务器利用会话密钥加密与客户端之间的通信。

es6的模块化好处,为什么commonjs不适合用于前端

好处就是可以配合webpack配置左tree shaking做性能优化

因为commonjs是运行的时候才去导入的,没办法做按需引入,也就不能做tree shaking和scope hosting,而且commonjs是同步加载的,对前端页面渲染会有很大的影响,比如白屏时间会变长等

dom什么时候分配内存


? 12. react的生命周期
? 13. redux和state的区别
? 14. redux的action要传第三个参数怎么办
? 15. redux要有异步放在action里面还是reducer里面,为什么
? 16. 项目优化可以从哪几个方向入手?


二面三面:
1.说下你现在在做的项目,用的技术栈,有什么功能
2.原型链和作用域链的区别,他们的终点分别是什么
3.react如何绑定多个事件
4.你常用es6属性
5.对闭包的理解
6.三次握手过程,websoket有三次握手阶段吗
7.react生命周期
8.hook怎么实现class的生命周期函数
9.深拷贝几种方式
10.水平居中几种方式
11.盒子模型
12.react优缺点
13.react为什么不做双向数据绑定
15.排序算法题,前后补上
16.实现一下Array.reduce
17.react为什么要废弃一些生命周期函数
18.合成事件相关
19.虚拟dom优势
20.react怎么绑定监听,如屏幕滚动
21.为什么要用redux
22.怎么实现点击选中列表项
23.你做过哪些react项目上的优化
?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:05:05  更:2021-08-03 11:06:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 4:48:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码