2017.08.17 360一二三面

前言

360的面试和网易一样,是一天之内完成三轮面试,不同的是,他们是视频面试,用的牛客网的系统。

一面

1.谈谈项目

我感觉等会肯定会问Angular的问题...

2.你说设计模式,那你的项目里用到了哪些设计模式?

1.依赖注入模式(服务)
2.观察者模式(rxjs)
3.单例模式(模块)
4.模板方法模式(钩子)
5.装饰者模式(组件)
6.发布订阅模式(事件)

3.项目里的架构是什么样的

组件化、模块化、抽象、封装、隔离类职责、OOP的其他原则

4.NG的双向数据绑定是怎么样的

详情见Angular的数据绑定

5.谈谈面向对象和继承,object.create的实现原理

详情见Javascript与面向对象

Object.create = function(o) { 
        function F(){}  
        F.prototype = o;  
        return new F(); 
 };  

6.面向切面编程和函数式编程听说过吗

前面没听过,后面了解过:
函数式编程引入了纯函数的概念来帮助编程,纯函数对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,也不依赖外部环境的状态。它是一种编程范式。RXJS用到了它。

7.谈谈跨域,postmessage的应用场景是什么样的?

详情见JS与跨域

8.对象深拷贝怎么实现

新开辟一块内存空间,把源对象的属性和方法逐个拷贝进来。

function deepClone (obj) {
  let temp = Array.isArray(obj) ? [] : {}
  for (let key in obj) {
    //是否有嵌套对象
    temp[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]
  }
  return temp
}

9.谈谈你使用过的构建工具,说说对webpack的理解

gulp、webpack。打包工具,把所有文件看做是资源,然后根据它们的依赖关系打包成一个最终文件。

10.你后端为什么使用node

想前后端同构,现查现用

二面

谈谈你对ts的理解,项目中对ts用到什么程度?js和ts有什么本质的区别。

ts是js的超集,es的所有特性它都支持,包括还在草案的await/async和装饰器等,另外就是加入了C#的一些语法,可以使用它进行传统的OOP编程,对工程化和多人项目协助非常友好。我只用到了和es有关的部分。js是JIT的解释语言,ts支持AOT编译语言。

既然用过angular,zone.js了解多少,干嘛用的?

详情见Angular的数据绑定

ng的装饰器模式理解多少?知道ng怎么把字符串转换成模板引擎的吗?

装饰器可以将各个类解耦,可以方便的扩充一个类的功能。
通过注解的方式解析模板,具体是由@angular/compiler 库和html-parser库完成的。但未来会采用AOT的方式直接编译成用来生成和维护DOM结构的JavaScript代码。所以实际上并不会把字符串解析成HTML模板。

面向对象的概念是什么?解释一下封装、多态、继承 的意义

封装多态继承抽象。
封装:封装是通过限制只有特定类的对象可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。
多态:多态是指由继承而产生的相关的不同的类,其对象对同一消息会做出不同的响应。
继承:指在某种情况下,一个类会有子类,子类比原本的类(父类)要更加具体化。

多重继承怎么实现,多重继承里可能会出现什么数据结构?从而导致什么问题?

JS本身是不提供多重继承,可以模拟多重继承,但是它会大大增加代码的复杂度和维护难度。
图,查找时出现循环,改成委托行为(数据结构变成链表)。

图灵完备理论知道吗?关于图灵的其他知识知道吗?

如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟单带图灵机,那么它是图灵完备的。图灵机由以下几个部分组成:
一条无限长的纸带TAPE。
一个读写头HEAD。
一套控制规则TABLE。
一个状态寄存器。

如何在一个dom节点前面插入节点?

insertBefore,
如果是后面的话就先找到该元素的父元素,然后判断该元素是否是最后一个元素,如果是最后一个元素就直接在父元素上appendChild。
如果不是最后一个元素,就找到该元素的下一个元素,然后在它的下一个元素之前用insertBefore插入。

树的遍历方法有哪些?

前序、中序、后序

递归和迭代的区别是什么,各有什么优缺点?尾调用知道吗?

递归是函数调用自己,迭代是循环调用别的函数
尾调用就是在return的地方执行递归

函数式编程和面向对象编程冲突吗?为什么?

不冲突,比如TS和rxjs在NG项目并存,并且js也是一门灵活的语言

讲讲你对DI(依赖注入)的理解?

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

策略模式和单例模式说一下理解?

策略模式指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。
单例模式中单例对象的类必须保证只有一个实例存在。

Reflow和Repaint的区别?如何避免重绘?

Reflow定义:元素要先计算才渲染。
增删改DOM、移动DOM位置、修改一些CSS样式、Resize窗口、修改默认字体等会触发。
Repaint定义:元素的属性已经确认下来不需要计算,只需要绘制。
样式、DOM有变动都会触发,尽量少触发:比如使用DocumentFragment操作DOM。参考资料

Shadow DOM听说过没有?

Shadow DOM为Web组件中的DOM和CSS提供了封装。将他们隔离开来,以免其中的操作影响到别的DOM和样式。参考资料
NG提供了三种方法应用影子DOM:Native(不进不出)、Emulated(只进不出)、None(可出可进)

讲讲跨域的方法?

详情见JS与跨域

setTimeout和requestAnimationFrame的区别?

setTimeout由于不准确会出现掉帧丢帧的情况,requestAnimationFrame是帧刷新驱动的。
参考回答

谈谈事件模型?

Javascript与事件

讲讲安全方面的攻击手段?xss和csrf有什么区别?

xss、csrf、sql注入、ddos、文件上传漏洞、内存缓冲区溢出、弱口令、社工等等
xss重点在跨站脚本攻击,混淆数据和代码从而达到目的,所以常常用来散布蠕虫
csrf重点在跨域请求伪造,一般利用的是web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。所以常常用来刷接口

汇编的指令还记得多少?

mov、jmp、mul、add、ret、loop等等...

矩阵转置和矩阵相乘还记得吗?

转置是把矩阵的行变成列,列变成行
相乘是把一个mxn和nxp的矩阵转成mxp的矩阵


矩阵相乘公式.png

谈谈事件循环?

Javascript与事件

闭包是什么?内存泄露怎么观察?

闭包是JS特有的一种作用域机制,它可以让一个函数作用域有权力访问作用域链上的变量。
通过chrome的开发者工具的memory栏可以观察。

如何使用css实现硬件加速?

因为CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行,所以可以使用transform: translateZ(0)来开启硬件加速。transform: translate3d(0, 0, 0)也可以。

webgl了解过没有?

当时直接说没有。
webgl学习资料

三面

hr那边比较嘈杂,有些地方要费劲才能听清...

你现在在哪?为什么不找份实习?
为什么会报考云南大学?
对前端和安全关系的理解?
为什么做前端?
家人反对你来北京吗?
有没有投其他公司?
如果360不发offer给你,你会选哪家公司?
有的公司的安全团队是为自己公司的安全服务的,有的公司的安全团队是为外面的各大企业安全服务的,对此你怎么看?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,631评论 18 399
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 114,376评论 24 450
  • 五月的某天下午,我想写这么一篇文章,谨以此篇,献给我可能以后会经常见不到的同学们_ 现在还在休学,六月过完生日(6...
    imryo阅读 507评论 5 6
  • 看到你发的朋友圈:“当一个人的内心有一片草原,头顶有一片天空,就不会在乎谁拿了自己的仨瓜俩枣。”你遇到事情了,从文...
    伟伟仔阅读 646评论 0 0
  • 凌晨, 突然间就醒了, 窗外的雨声, 滴答滴答变成了哗啦哗啦! 这个点, 应该是酣然入梦的时间吧! 不知从什么时候...
    木棉清雨阅读 107评论 0 0