记一次面试

记一次面试

@(记录)[面试]

上周四从广州跑到深圳面试一个实习,一直关注的一个公司,也是大学以来第二个面试,关于前端的第一个面试,还是很紧张,准备也不是很充分,再次证明基础很不好,实力还不强。。。。


公司在22楼,我跑到2楼问。。。
最后才知道有22楼,哎,读书少见识短。。。

进公司之后是等hr姐姐(说话非常可爱),因为有人已经在面试了,所以等了一会儿,然后就是到办公室里面做笔试,忘记几道题了,有简答(typeof可能的值,模块化是什么,什么是跨域,说出你知道的办法。。。),算法是求素数(我写成求偶数了。。。大脑短路,后来技术面的时候一说我就意识到写少一个循环了,而且又两个办法,直接求素数和晒素数出来),常见的设计模式并实现其中一种,两个模块的引用会发生什么,怎么解决(没仔细思考,技术面的时候提到了代码耦合),关于原型继承和重写函数。。。大概就记得这些笔试题了。面试分为笔试(30min)——技术面——hr面,最后hr姐姐很热心得问了各种问题,然后说和技术官商量后再给我回复(全程2h)。

  • typeof可能输出的值

    1
    2
    3
    4
    5
    6
    7
    typeof null;// object
    typeof undefined;// undefined
    typeof 123;// number
    typeof '123';// string
    typeof true;// boolean
    typeof function(){};// function
    typeof {};// object
  • 跨域
    浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域,所以跨域就出现了,同源策略:请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同。。。我的回答是除了通协议域名端口的其他资源都是跨域
    办法:
    jsonp,iframe,curs,window.domain
    详解js跨域问题
    跨域资源共享 CORS 详解
    浏览器同源政策及其规避方法
    XMLHttpRequest Level 2 使用指南

  • 求10000以内的素数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    //穷举法O(n*n)
    function prime() {
    var result = [];
    for(var i = 2; i <=10000; i++) {
    var flag = true;
    var re = Math.floor(Math.sqrt(i));
    for(var j = 2; j <= re; j++) {
    if (i % j === 0) {
    flag = false;
    }
    }
    if (flag) {
    result.push(i);
    }
    }
    return result;
    }
    prime();//10000内的素数有1229个

素数1
素数2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//筛素数法(O(m*n))
function prime2(size) {
var result = [false,false,true];
var items = [];
for (var i = 3; i <= size; i+=2) {
result[i] = true;
}
for (var i = 3; i < size; i++) {
if (result[i]) {
var item = 2;
while(item * i <= size) {
result[item * i] = false;
item++;
}
};
};
for (var i = 0; i < result.length; i++) {
if (result[i]) {
items.push(i);
}
}
return items;
}
prime2(10000);

  • 常见设计模式
    单例模式,观察者模式,适配器模式,代理模式
    实现单例模式,通过getInstance方法返回单例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //当时只是简单的一个单例,其实有看过《JavaScript设计模式与开发实践》,看来不常用的东西真的会不记得。。。。。
    function instance() {
    var item = [];
    var instance = null;
    }
    instance.getInstance = function() {
    if (!this.instance) {
    this.instance = new instance();
    }
    return this.instance;
    }

单例模式
策略模式
代理模式
。。。。。。

  • 原型继承并重写方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var item1 = function(){};
    var item2 = function(){};
    item1.prototype.fun = function() {
    console.log('read');
    };
    item2.prototype = new item1();
    item2.prototype.fun = function () {
    console.log('read again');
    }
    var i = new item1();
    var j = new item2();
    i.fun();//read
    j.fun();//read again
  • 两个模块的引用会发生什么,怎么解决
    循环引用导致模块代码不能正常运行(强耦合)
    办法:
    JavaScript 模块的循环加载

技术面的时候是两个年轻的帅哥,他们以为我是社招的。。。结果我说我是实习的,他们才看到简历。。。
然后问了很基础的css,bfc,设计模式,项目最喜欢哪个,vuex用没有用到项目里面,父子组件通信,非父子组件通信(原理)(监听,出发,on,emit)这里跪的很惨看到面试官一脸无奈。。。Orz。。。渐变条平铺背景,聊天气泡实现(圆角切成图片,css实现(伪元素中使用border-radius)),Promise的原理好处(异步调用,同步写法),Promise的方法用过几个有哪些(只说了then,all。。。Orz),播放器使用fetch请求数据好处(不用考虑跨域)

HR面是笔试带我进去的姐姐,人很好,聊着聊着就聊开了,未来是否考虑深圳发展,大三的话没有课上吗?职业规划?有考虑做产品经理吗?全栈发展?性格怎么样啊(我说熟悉的话会聊得很好,然后她说和我刚刚笔试的时候简直像是两个人。。。Orz),还聊了很多,问我面试过后去哪,我说去深大找同学什么的,小姐姐也是深大的,,说话好可爱。。。Orz。。还在等结果。。。

坚持原创技术分享,您的支持将鼓励我继续创作!