岗位简述
- 无工作年限以及毕业院校要求;
- 月薪 8K+;
- 需要熟悉 javascript 并且有一定的 Nodejs 使用经验和 TDD 经验;
团队以及公司
- 当前团队主要开发中的为移动销售类 APP 的开发;
- 公司为传统软件公司,目前正在进行转型;
- 技术选型为 react-native,同时有 iOS 开发配合开发。其中 javascript 主要负责业务的实现;
- 上班时间为早上八点半至下午五点半,其中允许一个小时的弹性;
- 基本不加班,如果真的需要的话,安排在周六赶进度;
对你的期望
- 良好的编码习惯,以及了解 TDD 开发;
- 熟悉 javascript 语言;
最终,如果你身在苏州或者考虑回到苏州,欢迎尝试下 笔试题目 ,不要求全部完成,但是最终会根据作答情况安排面试内容以及薪资评估。一共三题,可以借助谷歌完成,预计时间为一个半小时到三个小时。
欢迎发送结果以及简历我的邮箱 homerdx#qq
好像不错。。
做了一下题目,发现不少自己不知道的东西啊。 第一题:对require有了更多理解 第二题:闭包,实在没想出来怎么去访问函数中的变量 第三题:比较简单
收藏,坐等大牛提供第二题的思路
@crystaldust 哈哈,加油。
第2题,闭包中已经有person对象,肉眼是很容看到person的属性,用代码。。。小编是不是故意来坑大家的。。。
@QiQi57 No,代码 15行内 可以完美解决。
没什么开发经验,对第一题第三题了解不够,对于第二题,o.run只能访问person属性 我记得在处理FF的innerText的时候用到了getter和setter
HTMLElement.prototype.__defineGetter__("innerText",function(){
//这个回调函数中可以拿到调用属性innerText的对象
console.log(this)
})
document.getElementById(“#test”).innerText
//对于这道题我们可以
Object.prototype.__defineGetter__("getClosureVariable", function(){
return this
})
var person = o.run("getClosureVariable")
@coderwin 恩,基本思路正确,不过细节还需要完善下~
围观下第二题。。。
完善细节的意思就是__defineGetter__已经从 Web 标准中删除了,所以最好用Object.defineProperty?
var o = (function() {
var person = {
name: 'Vincent',
age: 24
};
return {
run: function(k) {
return person[k];
}
};
})();
Object.defineProperty(Object.prototype, 'getClosureVariable', {
get: function() {
return this;
}
});
var person = o.run('getClosureVariable');
console.log(person);
@faceair 因为题目中一直说请把 person 当成一个未知的 object,你怎么知道你的 getClosureVariable
不会冲突呢,对吧~
@vincenting 有点意思 我再想想~
那先取 getClosureVariable
属性,确定值为 undefined
,再定义 getClosureVariable
,这样不会冲突了吧
@faceair 是的,同时还要考虑如果有的话的一个后续操作。然后才是一个相对完整的答案。
@faceair 当然还有一个细节,一个小极端。
{
name: 'Vincent',
age: 24,
getClosureVariable: undefined
}
虽然有点啰嗦,但是程序本来就要严谨是吧。
Object.defineProperty(Object.prototype, 'getClosureVariable', {
get: function() {
return this.hasOwnProperty('getClosureVariable');
}
});
先判断是不是 getClosureVariable 是不是 undefined,在判断 getClosureVariable 是不是 Object 原型上的。如果是原型上的这里返回 false,如果是 Object 实例上会覆盖原型上的值 这里返回 undefined
哦判断是否是 Object 实例上的 undefined 好像没这么麻烦。。只要在原型上加个不是 undefined 的值看是否覆盖就行了。。
好像这个公司,前端只是打酱油的,主要做c++的?
@faceair 单从这个题目来说,到这步已经很不错了。但是还是有一些细节需要思考:
- 覆盖原来原型上的值真的很好么,如果是个项目会不会影响其他地方;
- 我使用
__defineGetter__
或者defineProperty
申明的属性如何删除,来对项目里面其他地方的影响降到最低; - 虽然我不能知道 person 有哪些实例方法/属性,但是我可以从 Object 切入,毕竟我有它的所有权限;
- 关于刚刚提出的特例,其实也很简单,就是如果返回
undefined
,我可以defineProperty
后看看是不是可以返回object
,如果还是undefined
的话,说明就是我提到的那个极端情况。
然后综合这些,就可以对结果进行一个更好的完善。
@chapgaga 招 javascript,不做 web 前端。是一个我负责的新的移动端的项目。
@vincenting 你们官网是啥?苏州好像有多家做你们的东西啊
@chapgaga http://uccc.cc/ 做通信的的确很多,不过新项目是销售类 CRM APP 方向的。
@vincenting 不要说是开挂啊,呵呵
@chapgaga 开挂是啥 。。。通信是呼入呼出客服业务这样的。新项目是给销售用的 APP =- =
@vincenting 就是一个人注册很多家公司啊:)传说中的开挂,哈哈
@vincenting 原来是这样,太特么的炫技了,请收下我的膝盖啊
@crystaldust 哈哈,主要还是看对方的分析过程,然后看他语言哪些地方掌握的不好,例如可能会在作用域以及上下文那边犯错。如果答对的话,可以追问各种细节,考究其严谨性。
var person = Object.create( null,{ name:{ value:“john”,writable:false }, age: { value: 24, writable:true} });
var o = (function() { var person = { name: ‘Vincent’, age: 24 }; return { run: function(k) { return person[k]; } } })(); o.copyrun = o.run; o.someThing = 1; o.run = function(key){ if(key in this){ return this[key]; } return o.copyrun(key); } console.log(o.run(‘age’)); cosnole.log(o.run(‘someThing’));
var o = (function() { var person = { name: ‘Vincent’, age: 24 }; return { run: function(k) { return person[k]; } } })(); o.copyrun = o.run; o.someThing = 1; o.run = function(key){ if(key in this){ return this[key]; } return o.copyrun(key); } console.log(o.run(‘age’)); cosnole.log(o.run(‘someThing’)); 献丑了各位大神小弟只有这个本办法
@vincenting 我现在是vincenting的同事。都在统一通信。想了解更多,可以关注我在三个月前发的老贴: https://cnodejs.org/topic/55123a5ed792542a29789aa9