面试题1

420 阅读2分钟

1. js中如何判断类型

typeof; Object.prototype.toString.call; consturctor;intanceof

2. 执行如下代码,分别打印出什么

123 instanceof Number
new Number(123) instanceof Number
Number(123) instanceof Number

false true false 这个问题给我的感觉就两个字:神奇。说难不难,也不是什么超纲的题,但是如果没了解过instanceof,这题几乎是必错的,instanceof的使用定义为The instanceof operator tests whether an object has in its prototype chain the prototype property of a constructor.,意为判断该对象的原型链上是否有构造函数的prototype属性。首先instanceof左边得是个对象,所以用new的方式创建实例会返回true,不过如果进行运算的话就又变成false了,如下图

3. 执行如下代码,abc会是什么颜色,并说明原因

<style>
  #p1 {
      background: red;
  }
  p.container {
      background: bule;
  }
  .p {
      background: yellow;
  }
  <p id="p1" class="container p"></p>
</style>

最后渲染出来是红色,这道题考的是权重。

4. 执行如下代码会输出什么

// 题目1
setTimeout(function(){ console.log(100) });
console.log(200);
Promise.resolve().then(function(){ console.log(300) })

打印200 300 100

// 题目2
new Promise(() => {
  thorw new Error();
}).then(() => {
  console.log(1);
}, ()=>{
  console.log(2);
}).catch(() => {
  console.log(3);
}).then(() => {
  console.log(4);
})

打印2 4

5. 执行下面代码输出什么信息

const obj = { a: 100 };
const obj1 = obj;
let a1 = obj.a;

obj1.a = 200;
console.log(obj.a);
console.log(a1);
a1 = 300;
console.log(obj.a);
console.log(obj1.a);

打印200 100 200 200

6. 执行如下代码,然后点击每个 a 标签分别弹出什么信息?并写明原因。

let $body = $('body');
let arr = [1, 2, 3, 4, 5];
let i, length = arr.length, $a;
for(i = 0; i < length; i++){
  $a = $(`<a>${i}</a>`);
  $body.append($a);
  $a.click(function () { alert(i) })
}

弹出5个5

7. 现有瀑布流式图片页面(页面下拉时无限加载图片),用 JS 监听每个图片的点击事件。

  1. 可以获取每个img,循环给所有img加上点击事件
  2. 更好的方法是用事件代理,给img的父级加点击事件

8. 用 flex 实现下图效果。容器宽高不定,子元素宽高固定

用align-self属性搞定个别元素的对齐方式,阮一峰的博客里介绍了flex各种属性的使用方法

9. 如下代码,分别弹出什么信息?

// 题目1
var a = 100;
function create() {
  var a = 200;
  return function () { alert(a) }
}
var fn = create();
fn();

// 题目二
var a = 100
function invoke(fn) {
  var a = 200;
  fn();
}
function fn() { alert(a) }
invoke(fn)

第一题弹出200 第二题弹出100,本题考查的是作用域。

10. 用JS实现深拷贝

11. 用 JS 实现二分查找(折半查找)算法,并写出时间复杂度。

深拷贝已经成了前端开发必须会手写的函数,算法也成了大厂筛选人才的考题,这两道题我面试的时候都答出了基本思路,但是代码实现不太好(我居然没有背代码),所以我想单独钻研一下这两道题,这里就不贴答案了。