[苏州] 统一通信招聘 javascript 开发工程师
发布于 21天前 作者 vincenting 1081 次浏览 来自 招聘

岗位简述

  • 无工作年限以及毕业院校要求;
  • 月薪 8K+;
  • 需要熟悉 javascript 并且有一定的 Nodejs 使用经验和 TDD 经验;

团队以及公司

  • 当前团队主要开发中的为移动销售类 APP 的开发;
  • 公司为传统软件公司,目前正在进行转型;
  • 技术选型为 react-native,同时有 iOS 开发配合开发。其中 javascript 主要负责业务的实现;
  • 上班时间为早上八点半至下午五点半,其中允许一个小时的弹性;
  • 基本不加班,如果真的需要的话,安排在周六赶进度;

对你的期望

  1. 良好的编码习惯,以及了解 TDD 开发;
  2. 熟悉 javascript 语言;

最终,如果你身在苏州或者考虑回到苏州,欢迎尝试下 笔试题目 ,不要求全部完成,但是最终会根据作答情况安排面试内容以及薪资评估。一共三题,可以借助谷歌完成,预计时间为一个半小时到三个小时。

欢迎发送结果以及简历我的邮箱 homerdx#qq

30 回复

好像不错。。

做了一下题目,发现不少自己不知道的东西啊。 第一题:对require有了更多理解 第二题:闭包,实在没想出来怎么去访问函数中的变量 第三题:比较简单

收藏,坐等大牛提供第二题的思路

第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 单从这个题目来说,到这步已经很不错了。但是还是有一些细节需要思考:

  1. 覆盖原来原型上的值真的很好么,如果是个项目会不会影响其他地方;
  2. 我使用 __defineGetter__ 或者 defineProperty 申明的属性如何删除,来对项目里面其他地方的影响降到最低;
  3. 虽然我不能知道 person 有哪些实例方法/属性,但是我可以从 Object 切入,毕竟我有它的所有权限;
  4. 关于刚刚提出的特例,其实也很简单,就是如果返回 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

回到顶部