4.26,华信前端岗位面试,对日开发,项目为日本电商网站,后来得知前端技术栈为react全家桶,和我接触过的前端主流框架完美避开,看来前端学习真的应该了解每个主流框架,真的很流行。因为传统的对日开发印象对技术要求不太严格,会写业务足够,底层基础不太涉及,所以导致了这次面试真的被虐的很惨,很有记录下来的必要,留给自己以后翻看,应该也是有意义的吧。
下面切入正题,首先第一个问题让写一个自然数数组各个元素的奇偶数判断问题,比较简单,思路用for循环遍历各个元素除2判断余数是否为0,然后问了用什么方式可以代替for循环,突然一问有点发懵,只说了个while,后来查了发现还有很多方式都可以:
1.数组迭代:map()等方法,大概具体用具体查吧,这里不解释了。贴一段代 码:vararr=sporter.map(function(item){returnitem.name})
2.递归!使用if判断应该真的可以。
3.项目中一直使用的underscore等工具库居然忘了说,但是原理也应该都运用到了循环,只是使用封 装好了的具体方法而已,但确实可读性都比for循环强很多。
第二个问题问到了js中函数的启动方式
1.一般声明函数后直接调用。
2.方法模式调用:
var func = function() {
alert("我是一个函数么?");
};
// 将其赋值给一个对象
var o = {};
o.fn = func; // 注意这里不要加圆括号
o.fn();
函数调用中,this 专指全局对象 window,而在方法中 this 专指当前对象。
3.构造器调用模式
将函数作为构造器来使用的语法就是在函数调用前面加上一个 new 关键字。
后来他又刻意问了一下new一个函数与一般声明的不同。
4.apply、call调用模式
具体:JavaScript函数的4种调用方法详解_javascript技巧_脚本之家
第三个问题:函数自执行
也是我提了一句函数自执行,以前因为看过一些,所以才敢说,但是到真正写的时候发现完全懵比,这也是直接崩盘的一个问题。
(function foo() {console.log(123)})();
void function foo() {console.log(123)}();
最后面的()起到了函数自执行的作用,()里面也可以传递参数。
第四个问题问了时间戳转当地时间后的时区问题,这个也是完全懵比。。。留个空,查到答案后再补充。
剩下的大概就问了些ES6的问题,新特性,箭头函数等。也没有细问,说个大概也就过去了。但是百度了es6的新特性后发现很多都没答上来,es6的十大特性 - 简书。
大概问完发现这次面试完全就是一次js的考察,html+css相关的问题都没有提,与后台联调相关的流程,请求相关的问题也没有考察,可能也是因为项目的侧重不同吧,已经很谢谢他没有考察原型链相关的问题,可能也是看我肯定是凉了吧hhhh,码着码着发现完全没有通过的可能,裸面真的不靠谱,可恶啊,都是大猛男,基础真的很重要。
网友评论