目录
一、海康威视
单选题
多选题
两道编程题
1.冒泡排序
2.力扣172
二、微众银行
11个关于前端的选择题 45分,隐约记得的:
内联元素:即inline元素
yield
类的唯一标识是原型,构造函数时公共标识
console.log(Math.floor(Math.abs(Math.min(-123.45, 123.45, 32))));
submit是触发了什么?
三道编程题 55分
第一个题目是把一维数组转换成树状结构
第二个是数组去重,数组里面包含数组,对象,字符串第三个输出计算两个日期之间的有效工作日(考虑闰年)
function rangeDay(day1, day2) { const result = [] const dayTimes = 24 * 60 * 60 * 1000 //一天有多少ms const startTime = day1.getTime() // 获得Date总的毫秒数(时间戳) const range = day2.getTime() - startTime let total = 0 while (total <= range && range > 0) { result.push(new Date(startTime + total).toLocaleDateString().replace(/\//g, '-')) total += dayTimes } return result }; console.log(rangeDay(new Date("2000-2-27"), new Date("2000-3-02"))) </script>
三、长沙兴盛优选
共11道题
单选+多选两个(this指向、html)+三道简答+一道编程
单选:html协议在什么层、如何区分js运行在node环境下还是本地浏览器下、什么属性会加速GPU等
三道简答题
- 移动web开发跨平台技术有那些,各自特点,框架
- TCP面向连接和UDP面向无连接,链接指什么,怎么理解有链接和无连接
- JS什么场景下使用字符串乘法
一道编程
leetcode179,输出数组最大
<script> var largestNumber = function(nums) { const res = nums.sort((a, b) => `${b}${a}` - `${a}${b}`).join(''); return res.startsWith('0') ? '0' : res; }; console.log(largestNumber([3, 30, 34, 5, 9])); </script>
四、复习JS的内置对象
1.Math对象
Math.PI
Math.floor
Math.ceil
Math.round 注意:console.log(Math.round(-1.5)); // 这个结果是 -1
Math.abs
Math.max()
Math.min()
Math.random() 0<=x<1
console.log(Math.PI); // 一个属性 圆周率
console.log(Math.max(1, 99, 3)); // 99
console.log(Math.max(-1, -10)); // -1
console.log(Math.max(1, 99, 'pink老师')); // NaN
console.log(Math.max()); // -Infinity
// 1.绝对值方法
console.log(Math.abs(1)); // 1
console.log(Math.abs(-1)); // 1
console.log(Math.abs('-1')); // 隐式转换 会把字符串型 -1 转换为数字型console.log(Math.abs('pink')); // NaN
// 2.三个取整方法
// (1) Math.floor() 地板 向下取整 往最小了取值
console.log(Math.floor(1.1)); // 1
console.log(Math.floor(1.9)); // 1
// (2) Math.ceil() ceil 天花板 向上取整 往最大了取值
console.log(Math.ceil(1.1)); // 2
console.log(Math.ceil(1.9)); // 2
// (3) Math.round() 四舍五入 其他数字都是四舍五入,但是 .5 特殊 它往大了取
console.log(Math.round(1.1)); // 1
console.log(Math.round(1.5)); // 2
console.log(Math.round(1.9)); // 2
console.log(Math.round(-1.1)); // -1
console.log(Math.round(-1.5)); // 这个结果是 -1
生成随机整数的方法
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(2, 10));
//应用
var arr = ['张三', '张三丰', '张三疯子', '李四', '李思思', 'pink老师'];
console.log(arr[0]);
console.log(arr[getRandom(0, arr.length - 1)]);
2.Date对象
<script>
// Date() 日期对象 是一个构造函数 必须使用new 来调用创建我们的日期对象
var arr = new Array(); // 创建一个数组对象
var obj = new Object(); // 创建了一个对象实例
// 1. 使用Date 如果没有参数 返回当前系统的当前时间
var date = new Date();
console.log(date);//Tue May 17 2022 20:21:42,此时的时间
// 2. 参数常用的写法 数字型 2022, 4, 17) 或者是 字符串型 '2019-10-1 8:8:8'
var date1 = new Date(2022, 4, 17);
console.log(date1); // 返回的是 Tue May 17 2022 00:00:00
var date2 = new Date('2019-10-1 8:8:8');
console.log(date2); //Tue Oct 01 2019
</script>
格式化日期年月日,注意月份需要加1
<script>
// 格式化日期 年月日
var date = new Date();
console.log(date.getFullYear()); // 返回当前日期的年
console.log(date.getMonth() + 1); // 月份 返回的月份小1个月 记得月份+1 呦
console.log(date.getDate()); // 返回的是 几号
console.log(date.getDay()); // 3 周一返回的是 1 周六返回的是 6 但是 周日返回的是 0
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates = date.getDate();
var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var day = date.getDay();
console.log('今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day]);
</script>
格式化日期时分秒
<script>
// 格式化日期 时分秒
var date = new Date();
console.log(date.getHours()); // 时
console.log(date.getMinutes()); // 分
console.log(date.getSeconds()); // 秒
// 要求封装一个函数返回当前的时分秒 格式 08:08:08
function getTimer() {
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h : h;
var m = time.getMinutes();
m = m < 10 ? '0' + m : m;
var s = time.getSeconds();
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
console.log(getTimer());//打印的是当前的时:分:秒
</script>
时间戳
// 获得Date总的毫秒数(时间戳) 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数
// 1. 通过 valueOf() getTime()
var date = new Date();
console.log(date.getTime());
console.log(date.valueOf()); // 就是 我们现在时间 距离1970.1.1 总的毫秒数
// 2. 简单的写法 (最常用的写法)
var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
console.log(date1);
// 3. H5 新增的 获得总的毫秒数
console.log(Date.now());
倒计时效果
// 倒计时效果
// 1.核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时 ,但是不能拿着时分秒相减,比如 05 分减去25分,结果会是负数的。
// 2.用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
// 3.把剩余时间总的毫秒数转换为天、时、分、秒 (时间戳转换为时分秒)
// 转换公式如下:
// d = parseInt(总秒数/ 60/60 /24); // 计算天数
// h = parseInt(总秒数/ 60/60 %24) // 计算小时
// m = parseInt(总秒数 /60 %60 ); // 计算分数
// s = parseInt(总秒数%60); // 计算当前秒数
function countDown(time) {
var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
var inputTime = +new Date(time); // 返回的是用户输入时间总的毫秒数
var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
var d = parseInt(times / 60 / 60 / 24); // 天
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); // 分
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60); // 当前的秒
s = s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown('2022-5-17 15:26:00'));