[关闭]
@yacent 2016-10-21T17:39:24.000000Z 字数 2969 阅读 975

SNG TST 二面

面试题目


2016.09.03

一面是上个月就面完了,途中一直询问自己的一面面试官,自己面的如何,骚扰过别人两次,感觉有点不好意思,一直都问别人结果出了没有,不过还好是过了一面,不过不是很明白为啥把我安排到TST去了,不过也没关系,就去参加TST了。
不过这一天也是有点坑爹,因为通知我的时间是下午,改了时间又没有告诉俺,我下午去到,HR第一句就和我说,噢,你就是早上那个没有来的是吧

我一脸懵逼。经过一番斡旋,原来是他们没有通知到我。好吧,还好没有影响太多的心情。HR给我重新安排了面试官,因为面试官改时间是想早上全部面完,所以吧,他又被叫来了一次,我真担心他会不乐意,让他又加班了。不过还好,这面试官挺好人的。
下面开始说一下我整个面试流程吧。


自我介绍

永远不变的自我介绍,不过这次面试官好像比较严肃,可能面对面要装的厉害一点,不过一般二面的面试官都是挺厉害的。这个面试官表情有点酷,然后基本上不怎么说话,拿出一张A4纸,从我开始自我介绍就一直在那里谢谢谢,好恐慌,不知道他在写什么东西。反正就在埋头一只写,好吧,忽略这些东西。继续往下


JS方面

问:你说一下闭包以及为什么要使用

又和上次问的一样,这里我就大概复制一下吧。

首先说一下什么是闭包,最容易的解释就是 function return function,即函数里面包含另外一个函数,那么具体来说,就是由于作用域链的原因,内层函数能够访问外层函数的变量,这就是通常我们所说的闭包。

那么闭包主要是有以下的两个用途
1. 可以读取函数内部的变量
2. 可以使这些变量始终保持在内存当中

那么,使用闭包,我们应该要注意以下的一些问题
1. 闭包会使函数中的变量保存在内存当中,内存的消耗很大,所以我们不要滥用闭包,在适当的时候才去用
2. 由于作用域链的原因,内层函数永远只能访问到外层函数执行完成后的变量的值,所以在需要实时获取外层函数变量的时候,我们需要使用立即执行函数

问:你说一说组件化

对于组件化的理解,比如一个电视机的构成,是由显示器、音响、电路板等各个部件构成,每一个组件之间相互连接,而最终构成一台完整的电视机,组件化,我认为就是将网页的各个部件都拆分成一个个的组件,比如将页面拆分成header、nav、container等的组件,组件与组件之间,只有是组合与包含,各自的逻辑、样式都保持独立,相互不影响,每个组件单独开发,在组件化开发过程中,要构成一个完整的页面,只需要将各个组件都拼接在一起,就完成了一个页面。这是我认为的组件化。
在实习的过程当中,也是运用组件的思想,在做七夕活动表白日活动的时候,使用freemarker的宏定义,将页面当中的header、奖赏功能等都分离为一个个的组件,其他页面由共用到这一部分的,只需要使用freemarker的模块引入,将组件加入到页面当中。

问:你实习当中有写过什么组件吗?

这个是我在实习过程中写七夕活动页面的时候,写过一个点赞的组件,这个就不在这里赘述了,因为具体情况很难描述,主要是父子之间的通信方式,我采用的是回调函数去处理的。

问:你常用一些什么框架

UI方面的,用过bootstrap、frozenUI、semanticUI
JS的话,比较常用的是 jQuery、Zepto、underscore等等
框架方面没有怎么用,尝试过 react、vue,然后nodejs方面用过 express

问:那你说一下react,为什么要使用他?

为什么要使用react,首先是react和以前写数据绑定的方式不同,首先来说他简单,采取绑定的方式,在任何时候都能不够不费劲地展示数据,并且当数据变化的时候,能够自动管理UI的更新。第二就是react比较高效,采取virtual DOM的做法,在内存当中先把需要进行改变的地方计算好,然后页面上只改变必须的改变的DOM,效率高,不会整体改变或进行过多的DOM操作。第三就是可以实现组件化,实现代码的复用,并且能够有助于提高测试、可维护性和可拓展性。

问:除了框架,还有关注什么新技术吗?

ES6算吗

问:你说一下es6的新特性

我说一些我大概常用的一些,let const for ... of ... promise

问:promise是干嘛的

主要是用来解决callback hell问题的,使其可以实现异步不需要一层嵌套一层,在then里面进行处理。
不过具体的介绍还是大家自己去看 es6的相关知识。


项目相关的

问:你挑一个项目来说吧

我主要是讲了自己的 评课网站的那个项目,简单介绍了一下

问:你在其中遇到了什么困难?

好开心,他问了,我把自己准备的东西又开始背书了,具体可以看我这个

https://www.zybuluo.com/yacent/note/316217

性能优化方面也回答:
https://www.zybuluo.com/yacent/note/370110
https://www.zybuluo.com/yacent/note/360351


拓展问题

问:如果一个用户,他访问QQ页面,发现失效了,反馈给我们,请问,你们怎么去debug,帮助他解决问题

卧槽,这个问题,有点难哎,我首先说,我会先检查用户的网络配置有没有问题,确定是用户那边网络没有问题,才开始去看我们这边的问题。

问:你怎么去看呢?

我觉得最简单的,当然是远程控制用户的电脑,去进行相对应的操作。

问:那如果用户那边网络没有问题,你怎么办?怎么找出问题在哪里?

接下来可以采用一些抓包技术,这边电脑可以临时开一个本地的服务器,让用户连进来,用fiddle或者wiresharks等的工具,抓包,分析所收取的包是否有异常或者说是否能够正常获取数据包的到来。

问:还有没其他方法呢?把你能想到的东西都说出来就好

那我觉得还可以通过后台的log去看用户的机子是哪里有问题,一般都会有相对应的日志,日志里面也会去显示一些请求返回的结果,从中可以查找一些问题。

这题我还真的不知道要怎么答,但是就是随便说了一些。

问:你把这上面的题做一下,然后给我

面试官用一张A4纸写了三道题目,然后让我写一下,主要是JS的基础题

1 + '1' = ?
1 - '0' = ?
[] - 1 = ?

那么当时我给出的答案是

'11'
1
-1

主要解释一下第三个吧,会调用Number这一个对象,会对[]进行转换,那么根据转换规则的话,空数组会被转换为数字0,所以变成 0 - 1 = -1


然后今天的面试就结束了,大概是30分钟左右,面试官也比较忙,然后让我上去告诉一下HR。

不过这中间也发生了一点小插曲,上去问了一下HR,我说我刚才面完的,看一下状态。
HR帮我看了一下,竟然告诉我:“简历被放回了资源池是什么意思?是不过吗?”
“我帮你问一下面试官,确认好再告诉你,我问问他是什么意思。”

经过大概10分钟的等待,听到我的名字被喊起,我以为,,,要告诉我挂了,今天流程已经结束,可以回去了。
结果,运气,what the hell!和我说 带我去HR面,感觉自己挺幸运的,我去,真的,听到可以HR面,我真的是很开心。不知道怎么说。

HR面的话,就比较传统,主要都是问你平时怎么学习,为什么选择前端,然后为什么不留原来的公司之类的。都是聊人生,正常答就好。

之后就开心的回家了。

这是一个新的开始,加油!校招不是结束,一定要继续好好地努力,不能被时代淘汰,一定要更加努力,更上一层楼。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注