javascript你必须知道的常见面试题(下)

2024-01-11  本文已影响0人  小薇同学v

26.如何判断一个变量是对象类型?

if (typeof yourVariable === 'object' && yourVariable !== null) {
  // 变量是对象类型
}
if (yourVariable instanceof Object) {
  // 变量是对象类型
}
if (Object.prototype.toString.call(yourVariable) === '[object Object]') {
  // 变量是对象类型
}
if (Array.isArray(yourVariable)) {
  // 变量是数组,不是对象
} else if (typeof yourVariable === 'object' && yourVariable !== null) {
  // 变量是对象类型
}

27.如何判断一个变量是数组类型?

if (Array.isArray(yourVariable)) {
  // 变量是数组类型
}
if (yourVariable instanceof Array) {
  // 变量是数组类型
}
if (Object.prototype.toString.call(yourVariable) === '[object Array]') {
  // 变量是数组类型
}

28.如何检查一个变量是否为函数类型?

if (typeof yourVariable === 'function') {
  // 变量是函数类型
}
if (yourVariable instanceof Function) {
  // 变量是函数类型
}
if (Object.prototype.toString.call(yourVariable) === '[object Function]') {
  // 变量是函数类型
}

29.什么是 JSON?如何将 JSON 字符串转换为 JavaScript 对象?

JSON是一种轻量级的数据交换格式,它以易于人们阅读和编写的方式表示数据对象。
json字符串转js对象:JSON.parse()
js对象转json字符串:JSON.stringify()

30.typeof 运算符返回哪些值?typeof 和 instanceof 有什么区别?

typeof返回string,number,undefined,boolean,object(object,null,array),function
typeof返回的值是数据类型,instanceof返回的值是boolean;
instanceof主要用于判断一个对象是否是一个实例的原型,主要用来检查对象的继承关系。

31.let、const 和 var 的区别是什么? 解释一下let 和 const 的块级作用域。

let、const 和 var都是用来声明变量的。

let和const是es6新增的声明变量的方式,声明的变量仅在声明的块或语句中可见,不会提升至整个函数或全局作用域。

32.数组的常用方法有哪些?

33.字符串的常用方法有哪些?

34.解释一下同步和异步的区别?

同步:代码按照顺序执行,一个任务执行完后才会执行下一个,会阻塞后面任务的执行。
异步:非阻塞,一个任务的执行不会阻塞后面任务的执行。异步代码需要考虑回调函数,
promise等方式来处理任务的完成和结果。

35.什么是异步编程?有哪些处理异步的方式?

异步编程:通过将耗时的任务分配给其他线程或线程池来实现的。可以提高程序的并发处理能力,让程序具有更好的性能和影响速度。
处理异步的方式:

36.什么是 IIFE(立即调用函数表达式)?

立即调用函数表达式是一种常见的函数表达式,会立即执行创建时定义的函数。
目的:创建一个独立的作用域,防止变量污染全局作用域。
使用场景:

37.什么是 LocalStorage 和 SessionStorage?有什么区别?

LocalStorage 和 SessionStorage 都是 Web Storage API 提供的一种存储数据的方式,它们用于在客户端浏览器中存储数据,以便在会话之间或在页面刷新后保持数据。

38.map 和 forEach 的区别是什么?

map 和 forEach都是js中用于迭代数组的方法,循环遍历数组中的每一项匿名函数中的this都是指向window。
区别:

39.bind , apply 和call 的区别是什么?

bind、apply 和 call 是 JavaScript 中用于修改函数执行上下文的方法。

40.parseInt 和 parseFloat 的区别是什么?

parseInt 和 parseFloat 都是内置函数,将字符串转换为数字。
parseInt将字符串转换为整数,可以接受一个参数或者两个参数。
parseFloat将字符串转换为浮点数,只接受一个参数,可以转换为整数或小数。

41.new关键字有什么作用?具体干了什么?

作用:

原理:

42.什么是 XMLHttpRequest?它有哪些常用属性和方法?

XMLHttpRequest是ajax技术的核心,是一种支持异步请求的技术。
ajax能实现不刷新页面就和服务器交互主要就归功于XMLHttpRequest。
属性:

方法:

43.什么是柯里化(Currying)?

函数柯里化是一种将函数转换为只接收一个参数的形式的技术。
将原来接收多个参数的函数转换为接收一个参数的函数,并返回一个新的函数,该函数接收剩余的参数并返回最终的结果。

44.DOM常见的操作有哪些?

45.什么是虚拟 DOM?有什么优势?

虚拟DOM是一个普通的js对象,用来描述真实DOM结构。
优势:

46.前端缓存方法有哪些?

47.渲染10万条数据怎么优化?闪烁怎么解决?

48.什么是回流和重绘?

回流:指浏览器必须重新计算并应用全部页面布局的过程。
回流会导致页面布局改变,元素的尺寸,位置,结构改变,计算样式的重新计算。回流的开销比较大,应减少回流的次数,提高页面的性能。
重绘:指重新绘制元素的样式,不涉及布局变化,开销较小。

49.什么是作用域链?有什么关键特点?

作用域链是在js中用于查找变量的一种机制,一层一层的引用关系形成了作用域链。
特点:

作用:保证执行环境里有权访问的变量和函数是有序的,只能向上访问,访问到window
对象即被终止。

50.Ajax的原理是什么?如何实现?

Ajax是一种用于在不刷新整个页面的情况下进行数据交换的技术。
通过js在后台异步地与服务器进行数据交互,获取数据并更新页面,无需刷新整个页面。

51.浏览器从输入Url到渲染页面发生了什么?

网络篇:

浏览器解析篇:

浏览器渲染篇:

52.Js的脚本延迟加载的方式有哪些?

页面加载完再加载js文件,js延迟加载有助于提高页面加载速度。

53.什么是https?工作原理是什么?http和https有什么区别?

https:是一种通过计算机网络进行安全通信的协议,用于确保在用户和网站之间传输的数据的安全性和隐私性。
原理:
1、握手阶段(Handshake):

2、密钥交换阶段(Key Exchange):

3、对称加密阶段:

4、数据传输阶段:

区别:
1、安全性:
HTTP: 是明文传输的协议,数据在传输过程中是不加密的,容易被中间人窃听和篡改。
HTTPS: 使用了TLS(Transport Layer Security)或SSL(Secure Sockets Layer)协议进行加密,确保数据在传输过程中是加密的,提供了更高的安全性。
2、加密方式:
HTTP: 不对数据进行加密,数据以纯文本形式传输。
HTTPS: 使用对称密钥加密和非对称密钥加密相结合的方式,确保传输的数据在安全通道上是加密的。
3、端口:
HTTP: 默认使用端口80。
HTTPS: 默认使用端口443。
4、证书:
HTTP: 不需要证书。
HTTPS: 使用数字证书,通过证书颁发机构(CA)进行签名,用于验证网站的身份。
5、搜索引擎排名:
HTTP: Google等搜索引擎可能更倾向于将使用HTTPS的网站排名更高。
HTTPS: 提供了更安全的传输,对搜索引擎排名可能有一定的优势。
6、连接方式:
HTTP: 是无状态的,每次请求都是独立的,不保留历史信息。
HTTPS: 由于加密和安全性的要求,可能会增加一些连接的

54.this指向谁?如何改变this的指向?

改变this指向:

上一篇 下一篇

猜你喜欢

热点阅读