2021-10-10 JavaScript面试题之 11-12

一、填空题


1、获取浏览器窗口宽度的操作是( ),获取浏览器窗口可视区域高度的操作是( )

document.documentElement.clientWidth || document.body.clientWidth

document.documentElement.clientHeight || document.body.clientHeight

2、获取指定元素节点box的包含边框和padding 的宽度操作( ),获取高度的操作是( )

box.offsetWidth

box.offsetHeight

3、获取指定元素box行内样式width的操作是( ),获取该元素外部样式display的操作是( )

box.style.width

getComputedStyle(box).width || box.currentStyle.width

4、数组的操作中,判断一个数据是否包含在数组中可以选择的操作是( )如果向数组中添加数据可以选择的操作是( ),如果从数组中删除数据可以选择的操作是( )

indexOf() includes() find() findIndex() some()

arr[索引]=值 push() unshift() splice()

pop() shift() splice()

5、如果要进行字符串中部分字符的替换,可以选择的操作是( )

replace() split()/join()

二、简答题

1、简述一下什么是预解析?

思路:预解析,主要和作用域空间联系到一起进行说明;一个变量或者函数主要在自己的作用域空间中完成预解析!需要注意函数特殊情况(表达式方式声明函数的预解析)

2、元素的clientWidth、offsetWidth以及scrollTop的区别?

思路:一般情况先说共同点(js原生操作、获取尺寸位置进行定位),然后分析区别和应用场景(clientWidth 元素宽度,不包含边框;offsetWidth元素宽度,包含边框;scrollTop网页文档和浏览器窗口之间滚动距离);(clientWidth一般用在获取浏览器窗口尺寸;offsetWidth一般用在获取元素节点尺寸;scrollTop一般用在滚动事件中进行操作)

三、编程题

1、编写一个函数,可以获取任意数值区间的随机数

思路:Math.random() 获取 0~1随机数
Math.random() * num 获取0~num之间随机数
min <= n < max: Math.floor(Math.random()*max)+min

2、编写一个函数,实现数组的冒泡排序算法

思路:如果能理解冒泡的操作过程,直接编写代码就好,本身代码难度不高(循环、选择)
如果不能理解冒泡操作过程,直接记忆编码套路

> 嵌套两层循环,内存循环终点是数组长度减去(外层循环次数+1)
for(var i = 0; i < arr.length; i++){
    for(var j = 0; j < arr.length - i - 1; j++){

		}
	}
> 比较内层循环第一个数据和下一个数据
if(arr[j] > arr[j+1]){
> 条件满足的情况下完成数据交换
		var temp = arr[j]
		arr[j] = arr[j+1]
		arr[j+1] = temp
	}

3、编写一个函数,实现数组的插入排序算法

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

/**
 * 插入排序算法
 */
function insertion(arr) {
  let len = arr.length;
  let preIndex, current;
  for (let i = 1; i < len; i++) {
    preIndex = i - 1;
    current = arr[i];
    while (preIndex >= 0 && current < arr[preIndex]) {
      arr[preIndex + 1] = arr[preIndex];
      preIndex--;
   			 }
    arr[preIndex + 1] = current;
 		 }
  return arr;
	}
var arr = [3,5,7,1,4,56,12,78,25,0,9,8,42,37];
insertion(arr);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值