我们是国内最早使用TypeScript进行全栈开发的团队。
目前正在招聘优秀的前后台及全栈工程师。
这是我整理的一些有关JavaScript基础的面试题,如果你有兴趣欢迎发送简历到me@k8w.io
。
第 1 题
请写出以下代码的运行结果,并解释原因。
let a = 123;
let b = 'TEST';
let c = [10,20,30];
let d = {
value: 'AAA'
}
function test(a, b, c, d){
a += 100;
b += '666';
c[0] = 999;
d.value = 'DDD';
}
test(a, b, c, d);
console.log(a, b, c, d);
第 2 题
请写出以下代码的运行结果,并解释原因
for(var i = 0; i < 10; ++i){
setTimeout(function(){
console.log(i);
}, 1000)
}
第 3 题
请写出以下代码的运行结果,并解释原因
let a = {
value: 'AAA',
show: function(){
console.log(this.value)
}
};
let b = {
value: 'BBB',
show: a.show
}
a.show();
b.show();
第 4 题
请为Array新增一个unique方法,作用是去除数组里重复的项,例如:
let a = [1, 1, 2, 2, 3, 3];
console.log(a.unique()); // [1, 2, 3]
第 5 题
请写出下面代码的运行结果,并解释原因?
let a = {
value: 'AAA'
};
a.show1 = function(){
console.log(this.value);
}
a.show2 = ()=>{
console.log(this.value)
}
a.show1();
a.show2();
第 6 题
请实现以下代码需要的 waitOneSecond 方法:
async function test(){
console.log('A');
//等待1秒
await waitOneSecond();
console.log('B');
}
第 7 题
有异步方法 task 如下,需要顺序执行N个异步步骤 testA -> testB -> … -> testN
async function task(){
await testA();
await testB(); // 可能抛出异常
await testC();
// ...
await testN();
}
已知在 testB 中可能抛出异常,请优化 task 方法,实现:
当 testB 抛出异常时,不再执行后续步骤,立刻将 task 方法返回
第 8 题
同上题,优化 task 方法,改实现为:当 testB 遇到异常,将错误信息console.log出来,继续执行后续步骤
第 9 题
假设有数组 arr,记录了一份订单列表,格式如下
let arr = [
{ name: "Lisa", value: 190 },
{ name: "Rose", value: 150 },
{ name: "Lisa", value: 290 },
{ name: "Marry", value: 370 },
// ...
]
请写一段代码,计算每个 name 对应所有记录的value总和,将它们输出为一个Object,例如:
{
"Lisa": 480,
"Rose": 150,
"Marry": 370
}
(尽可能用更少的代码)
第 10 题
下列代码可能有什么问题?应该如何解决?
let a = 0.1;
let b = 0.2;
let c = 0.3;
if(a + b == c){
console.log('OK');
}
第 11 题
有A, B两个数组,它们的格式如下:
let A = [
{ date: '2017-05-01', value: 100 },
{ date: '2017-05-02', value: 150 },
// ...
];
let B = [
{ date: '2017-05-01', value: 120 },
{ date: '2017-05-03', value: 140 },
// ...
];
A和B中只有一部分的日期是相同的,请你写一段代码,计算每一天A+B的结果,如果某一天A或B没有数据,则视为value为0,输出例如:
[
{ date: '2017-05-01', value: 220 }, // 2017-05-01 A=100 B=120 A+B=220
{ date: '2017-05-02', value: 150 }, // 2017-05-02 A=150 B无数据视为0 A+B=150
{ date: '2017-05-03', value: 140 }, // 2017-05-03 A=无数据 B=140 A+B=140
// ...
]
(正文完)