经过了两轮技术面,把面试题总结记录一下:
1、代码题
var a=1;
function fn(a){
a=2;
}
fn(a);
console.log(a); //输出 1
2、代码题
var a={a:1};
function fn(a){
a.a=2;
}
fn(a);
console.log(a.a); //最终输出 2 因为a是引用数据类型
3、代码题,这里注意第一行,使用了严格模式, 第一个输出值是2,第二个 会找不到变量a,提示a undefined。
'use strict';
var a = 1;
var obj = {
a:2,
b:function(){
this.a = 3;
},
print:function(){
console.log(this.a);
}
};
obj.print(); // 输出值是?
var print = obj.print;
print(); // 输出值是?
4、代码题,最终输出undefined,因为 函数才有prototype,obj是实例对象。主要考察原型链
function F(){
this.a = 1;
}
var obj = new F();
console.log(obj.prototype);
5、有A B两个数组,数组中的元素均为数字且有序排列,求B是否为A的子集
额外要求:
1. 不做数据类型转换
2. 不使用原生方法(函数)
//这道题 面试的时候我用了两层for循环,面试官问了复杂度之后,让我想想有没有复杂度更低的方法,后面我再写了个一层for循环的,但代码不是很好,后面想到更好的代码实现,再补充进来吧
6、逻辑题:如果你有两个桶,一个装红颜料,另一个装蓝颜料,两个桶的颜料一样多。你从蓝颜料里舀一杯,倒入红色颜料桶,
再从红色颜料桶里舀一杯倒入蓝色颜料桶,假设红桶中的红色/蓝色 为A,蓝桶中的蓝色/红色 为B,A和B哪个大?
答案:一样大,设两桶原本各有x升颜料,一杯是y升颜料,
第一步,从蓝颜料桶舀一杯(即y升)到红颜料桶,此时红颜料桶有红颜料 x升,蓝颜料 y升,红色/蓝色 = x/y;
第二步, 从红颜料桶舀一杯(即y升)到蓝颜料桶,由第一步可知,红颜料在红桶占比为:x/(x+y),蓝颜料占比为:y/(x+y)
则,在舀到蓝桶的y升颜料中,红颜料占:y * (x/(x+y)) ,蓝颜料占:y * (y/(x+y))
那在蓝桶中,红颜料有 y * (x/(x+y)) 升,蓝颜料:(x-y)+y * (y/(x+y))升
化简可得:蓝/红 = x/y
7、设计题:抽奖设计,假设双十一当天,公司要做一个注册拉新的活动,每个来注册的新用户都有一次抽奖机会,抽奖的方式为大转盘的方式,具体前端页面如下图,设计一个关于抽奖的前后端交互接口,需要列出主要字段,尽可能详细。
//这道题因人而异,这一年我是纯前端,接口都是后端直接提供的,所以面试的时候答的不是很好
//面试完请教了一下后端小哥哥
注册拉新,一次机会,一个接口完成抽奖流程。
三个功能:
1.初始化的奖品的数据
2.注册之后的用户数据
3.用户抽奖
1,2当它有,只设计抽奖交互接口:
服务器完成抽奖返回结果,参数需要用户信息,结果返回抽奖结果
get:/{userId}
response:
{
"code":0,//未开始,已结束,未登录,用户抽奖机会已用尽,成功
"msg":"code描述信息",
"data":{
"jpInfo":{
"id":,price,picUrl,name,level//这里如果初始化中有奖品了,只需要ID
},
}
}
8、个税题: 红标为我的答案,做这题有点崩溃,可能是前面答的不好导致太紧张,面的时候死活理不清~~面试结束2分钟就想出来了~~~有点蓝瘦~
9、语言题:如果要实现一个聊天室的逻辑,有room和user两个类,而room设置有一个门,而且有“主人的设定,只有主人才能开门和关门。请问开门和关门的方法,你会放到room类还是user类中实现 ?为什么?下图的两种实现方法,哪个更好?
//我的回答是 Room中更好,可以把开门关门放在prototype,开关门作为自身属性,这回答估计不是很好,面试官不是很满意,但我不大清楚其他的了,一年的小菜鸟,水平有限。
ps:前端开发是一个需要持续学习、不断总结得失、积累经验的职业, 作为刚一年工作经验的小菜鸟,可能水平并没有很高,
但是我一直在为成为一个优秀的前端开发不断努力着!((* ̄︶ ̄))
也希望看到此文章的你,也要一起加油呀!嘻嘻!
Kaycee666
原创文章 24获赞 5访问量 1万+
关注
私信
展开阅读全文
作者:Kaycee666