凡科(2017.9.4)
秋招的第一站,其实上半年去面试的第一个公司也是凡科,现在也是从这家公司开始,也算一种缘分吧。
面试前
看红包书(关键),当然也会去归纳总结网络中的面经等。后来我才知道,我这次面的是互动组,主要有两个方面的业务——游戏还有平台。平台他们用的是angular,游戏的话用的是jQuery。平时他们使用原生的JavaScript比较多,所以比较看重基础,那些框架只是一个辅助的作用,这也是为什么面试的过程中问基础问了好多
今天请了一天的假,早上大概八点出门(约的是十点),吃早餐、搭地铁,到公司的时候也就是九点十五分作用
笔试加一面
自己做的时候比之前顺手了很多,但是还是会有不如意的地方,特别是第二题,闭包的解释不够清楚
先说第三题:
主要考察的是CSS选择器的优先级,这个自己答得还可以
第四题:
数组去重,自己做得还可以(因为之前特意回去都总结了一遍)
第五题:
对代码提出意见,自己做得也还好
关键就是下面两道题了:
第一题:
function print(){
var arr = [1,2,3];
for(i=0;i
输出的应该是 4 1 2 3
自己的答案:4 1 2 3 5 1 2 3 6 1 2 3
错误原因:没有注意到print函数中的i是全局变量,从而导致了错误
当自己发现了i是一个全局变量的时候,自己其实还说了另外一个答案——4 1 2 3 6 1 2 3 6 1 2 3,真的是傻逼了,其实第一个for循环第二轮中的i值已经为3了,所以跳出循环了。
function print(arr){
var result = [];
for(var i=0;i
结果:
另外,考官还问了一个问题:
其实就是输出了0,自己这里也答错了
这道题主要是考察了全局变量,作用域等知识
第二题:
function print(arr){
var result = [];
for(var i=0;i
首先,这道题考察了闭包,但是执行完这个函数之后返回的是一个数组,数组中包含5个函数,这5个函数都是console.log(arr[i]);。因为闭包的原因,所以导致执行到这一句的时候i值已经变成了5,所以输出了undefined。
自己的笔试结果是对的,但是回答的时候,没有回答好,首先面试官问temp是什么的时候,自己就一脸懵逼了,虽然后来答出来是一个数组,里面是5个函数,这个是对的。
扩展问题:
闭包成立的条件
我的回答是函数中嵌套函数,面试官对这个答案不是很满意
设置成立即执行函数之后的输出结果是什么?为什么?
更改成立即执行函数后
答案:
我的回到是输出1 2 3 4 5
但是理由讲的不清楚,关键是自己也不是很理解
其他问题:
凡科总结:
1.闭包问题的时候,自己对闭包的不够了解,导致第二道题讲的时候自己很没有底气,虽然最后是有答到一些点上,但是改成立即执行函数以后为什么可以这个答得模棱两可,问题的根源在于基础知识不扎实
2.生成一个空的数组的方法,new Array()跟直接等于[]的区别
var arr = [];//这是一种字面量定义数组的方法
var arr = new Array();//调用构造函数生成的数组
区别:用new关键字去开辟一个存储地址是比较耗资源、耗内存的。而字面量方式直接去内存开辟存贮字段相对简单,不耗那么多资源
其实上面讲的差别不大,从另外一个角度(语法角度),new Array 可以直接设置数组长度。比如new Array(8)
3.第一道题目中主要是考察全局变量i,在各个位置的输出结果,这里还是答得不够
4.将一个div放在一个窗口中,位置的怎么放。
答:取得窗口的宽高,然后用Math.random()得到随机数,然后乘以宽高,得出的值用于position:absoluted中的left还有top中
5.现在是放100个div,你又要怎么做?
答:还是通过3中提到的方法,但是需要判断它们有没有重叠
追问:如果一直重叠怎么办
答:设置一个次数,如果超出这个数的话,停止操作(感觉这里有bug),这个问题还需要进一步的请教他人
6.动画效果, (这里是开始问的)这部分是自己薄弱的地方,所以没有答好
自己的答案是通过transition,但是并没有回答好,所以这个方面还是要不断的总结和归纳
CSS3 Transitions, Transforms和Animation使用简介与应用展示
7.滑动到页面的某个位置,然后刷新以后,这个页面还在这个位置,你要怎么实现(自己回答了通过本地存储),却不知道在哪个节点存储这个节点的位置,其实就是事件处理
答:自己说可以通过本地存储将此刻的坐标记录下来
追问:什么时候记录
答:刷新之前,但是刷新之前具体要那个事件?怎么操作,自己没有回答出来,这个要请教一下大佬
js记录页面的点击位置并在页面刷新后滚动到该位置
参考文章
8.jQuery相关,什么是事件代理?JQuery怎么完成事件代理?
答:delegate,live,on,bind
9.垂直居中的方法,position:absolute中不设置top.left的话,怎么布局,只设置top不设置left又会怎样???
答了四种,但是忘了答最容易的以一种——height==line-height
二面
一面结束后等了几分钟后到了二面
1.你在做项目的过程中遇到哪些问题?
回答了webview打开窗口的问题,vue.set,还有二维码页面的bug
因为平时养成了写博客的好习惯,这里回答得不错
2.了解java?sql?linux
我说看得懂后台代码,sql语句基本的增删改查,数据库设计了解,对Linux不是很了解
追问:他又问了怎么java中怎么判别两个字符串相等
答:就说了==
其实判断java中两个字符串相等应该使用equals,而不是==,又给自己挖坑了
if(A.equals(B)){
}
原因是因为java是对象类型,所以不能简单的通过“==”来判断
equals()比较的是对象的内容(区分字母的大小写格式),但是如果使用“==”比较两个对象时,比较的是两个对象的内存地址,所以不相等。即使它们内容相等,但是不同对象的内存地址也是不相同的。
3.两个鸡蛋,测试破碎临界点,怎么优化你的代码
答:从一楼开始试,一层一层的试,当最后破碎的时候,它的前一层就是临界点
优化:因为有两个鸡蛋,所以可以隔一层去试,当它破碎的时候,再用另一个鸡蛋去试前一层,若不破碎,则为该层,若破碎,则为前一层
4.为什么要选择离开你原本的公司
答:想了解学习更多的东西
5.类型转换,一个数组等于[3,4,5]那它==字符串3,4,5么
答:相等!调用了toString()方法,
追问:那设置一个函数,将一个数组放进去,那么实战出来的结果等于字符串345
这个到现在我也不是很理解面试官的意思
凡科:9.11更
秋招的第一家公司,被刷了,加油吧
- 基础不够扎实