2017.08.16百度一面

前言

才面完蘑菇街就收到了百度的短信,没办法,面吧

面试题

1.自我介绍

这次真是超级后悔提Angular

2.为什么要用依赖注入,它的好处是什么?

它是一种设计模式,可以让类从外部源中获得它的依赖,而不必亲自创建它们。最大的好处是让使用者和被使用者解耦,从而反转依赖。

3.有没有用过Angular的工厂?

没有,ag2 以后的factory和 ag1 的有比较大的区别,ag2 弱化了 factory 模式,不过了解一点工厂模式:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。不过当工厂需要实例化的类越来越多时,工厂类将变成由相互依赖的工厂方法构成的巨型蜘蛛网。

4.ES6的模块化是什么?import进来直接用和Angular的依赖注入进来用有什么区别?

import和export导入导出模块,一个文件就是一个模块,最主要的区别是依赖前置和依赖反转。

5.数据类型有哪几种?引用和基本数据类型的区别?

7种,number、string、boolean、null、undefined、object、Symbol。
基本放堆里,引用放栈里,引用数据类型会有修改一个变量,导致和它相同引用的变量也被修改的情况。

6.谈谈原型链,Object.prototype的原型是什么?

原型链是JS这门基于原型编程范式的基础,它把所有对象都看做是Object的派生,每个对象都有原型对象,使用prototype和__proto__来标识,当然Object.getOwnProperty()也可以获取原型,当我们需要一个对象的属性时,它会沿着原型链一级一级向上找。
null

7.对象浅拷贝怎么做?使用JSON.parse(JSON.stringify(...))的方法有什么坏处?

Object.assign()或者先转JSON再转回对象,对象只有属性被拷贝过来。

8.谈谈闭包,解释一下闭包中变量在内存中的形态?闭包的实际应用场景有哪些?

闭包是指这样的作用域,它包含有一个函数,这个函数可以调用被这个作用域所封闭的变量、函数或者闭包等内容。通常我们通过闭包所对应的函数来获得对闭包的访问。
闭包里的变量在内存中是不会被清除的,如果循环引用会引起内存泄露。
当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。
词法作用域的查找规则只是闭包的一部分。
IIFE是封闭的闭包。
应用场景:创建一个模块(保护变量),必须有外部的封闭函数,然后至少被调用一次。封闭函数必须返回至少一个内部函数,这样内部函数才能在私有作用域中形成闭包。

9.你为什么选择学node?它和多线程语言相比有什么缺点和优点?node有可能会出现java中的死锁吗?

前后端同构,成本小。异步执行,非阻塞式,事件驱动,某些方面速度和效率没有java、go之类的语言高。node不会出现锁,因为根本不允许使用锁。

10.谈谈JS中的对象和类,class在JS中的实现是什么样的?

详情请看另一篇文章Javascript的面向对象

11.typeof Funcion答案是什么?

"function"

你可能感兴趣的:(2017.08.16百度一面)