一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1720|回复: 10
收起左侧

[找工就业] Linkedin 前端工程师 电面面经

[复制链接] |试试Instant~ |关注本帖
taybson 发表于 2016-7-14 13:02:28 | 显示全部楼层 |阅读模式

2016(7-9月)-[]CS硕士+3个月-1年 - 猎头| 码农类全职@Linkedin在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x


面试时间:2016-7-12
面试结果:跪

自己平时做Fullstack, 前端后端都有接触,主要用AngularJS,所以很少直接操作DOM,利用这次面试机会饿补了一下DOM的相关知识,但是基础还是欠缺,像上面这几道题还是没有答的非常流利。另外我工作中是不用JQuery的,也没有时间特地准备,但是通过面试了解到,Linkedin的还是用很多JQuery,因为写DOM原生程序,面试官说他对原生DOM操作也不是很熟,然后就在他的误导下写了一个和JQuery杂交的程序,就是下面让我写append一个array到dom节点上。后来面试之后在codepen上自己测了一下,才知道他给我的方法是JQuery独有的,DOM根本没法直接插一个Array到DOM上。而且之后他还让我对比一个一个的append元素和append一个array的区别,哪个好,因为当时并不知道这个是JQuery上独有的,所以从时间空间复杂度上做了回答。他又有所补充,说每次如果一个一个的append元素,那么每次都要定位它将要插入的位置,而后者不用,所以省时间。我对他的补充提出了质疑,说我已经在程序外边定位了parent dom,为什么每次还是要找,而且Array的长度是一致,循环的次数也不是一样多?之后他又尝试解释了一下,但是我并不觉得解释到了点子上。事后我专门做了测试,JQuery确实append一个array的话会比一个一个append快,但是和我最开始写的原生DOM方法比,这两个都慢了起码一倍,具体为什么快,我觉得可能面试官的解释有一定的道理,但是这完全是基于对一个第三方Library的了解,并不具备普遍意义。

总体感觉Linkedin某些前端面试官水平挺一般的,但是自己连电面都没过去,也说明自己挺菜的。总之还是继续刷题,继续找吧。大家好运!
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
另外一个细节,就是之前他们给我发邮件安排一个男的面我,然后面试的时候突然换人,也没有任何解释。我觉得一个专注职业社交的网站,能把面试安排的如此混乱,实在让我大跌眼镜。

基础题:
1. How to improve the accessibility of a website?
2. Explain event bubbling? Why it is a good approach?
3. Ways to add addtional stylesheets on bootstrap?
4. Why a css preprocessor such as LESS is better than traditional css?


. From 1point 3acres bbs
以下代码是Markdown写的,可以到我自己的网站看编排好的版本。http://www.stevenxzhou.com/linkedin-dian-mian-mian-jing/

### 题目一: 看代码猜结果
```javascript
var Foo = function(a) {
  // This function is not defined.
  // Either window or this doesn't have this method.
  function bar() {   
    console.log(a);
  };
  var a = 1;
  // This function is defined and is assigned to `this` Object only.
  // So the function can be accessed from a new created instance.
  // parameter a is accessible from all the nested function defined here.
  this.baz = function() {
      console.log(a);
  };
};

Foo.prototype = {
  // function is defined in prototype.
  // new created instance can access to this function.
  // but this function is defined in a different Object,
  // so it can not access to constructor's parameter.
  biz: function() {   
    console.log(a);
  }
};

var f = new Foo(8);
// Question1: Observe the function above and tell the result they would print
// for the following function calls.
f.bar(); // TypeError, f.bar is not a function.
f.baz(); // 8
f.biz(); // ReferenceError, a is not defined
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
// followup: how to resolve the errors and print expected values.
var Foo = function(a) {
  // Assign defined function to this Object.
  this.bar = function() {   
    console.log(a);
  };
  // Unchanged
  this.baz = function() {
      console.log(a);
  };
  // Assign parameter a to this Object.
  this.a = a;
};

Foo.prototype = {
  biz: function() {
    // access a from this, which is the created instance.
    console.log(this.a);
  }
};

// The instance before and after.
instance_before = {
  baz: function(){},
  proto: {
    biz: function(){}
  }
}
// The instance after.
instance = {
  bar: function(){},
  baz: function(){},
  a: 8,
  proto: {
    biz: function(){}
  }
}
// Summary
// Function and variable has to be defined in constructor  and assigned to this
// Object to make them accessible to new created instance and functions in
// proto object. Parameter for constructor can only be accessed within the   
// constructor. But constructor and proto are both in the same `this` scope,
// which means they belong to the same instance. proto is an attribute with an
// object as its value. functions in this new object doesn’t have access to  it’s
// parent function’s parameter if only it’s assigned to the `this` scope they share.
// For the given array of members:
```
### 题目二: 操纵DOM
```javascript
var members = [
    {
        name: 'Bill Denbrough',
        id: 1
    },
    {
        name: 'Ben Hanscom',
        id: 2
    },
    {
        name: 'Mike Hanlon',
        id: 3
    },
    {
        name: 'Richie Tozier',
        id: 4
    },
    {
        name: 'Beverly Marsh',
        id: 5
    },
    {
        name: 'Eddie Kaspbrak',
        id: 6
    },
    {
        name: 'Stan Uris',
        id: 7
    }  
];

<div id="content"></div>

// Question: insert links for each of the members into the content div
// The link would be like the example below
<a href="profile.jsp?id=<memeber.id>"><member.name></a>

var contentEl = document.getElementById("content");
var htmlC = [];
members.forEach(function(memeber){
    var name = member.name;
    var id = member.id;
    var link = "profile.jsp?id=" + id;
    var aEl = doucment.createElement('a');
    aEl.setAttribute('href', link);
    aEl.innerText = name;
    htmlC.push(aEl);
});
contentEl.append(htmlC);
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
// Follow up question:
What the benefits you can get by inserting them at once rather than inserting it each time you create a anchor tag?

```
-google 1point3acres
. 1point 3acres 璁哄潧
 楼主| taybson 发表于 2016-7-14 13:03:40 | 显示全部楼层
好像发错版, 如属实,麻烦请帮忙转移以下。
回复 支持 反对

使用道具 举报

lillian0 发表于 2016-7-14 13:15:58 | 显示全部楼层
好厉害 好全!-google 1point3acres

求加楼主微信
回复 支持 反对

使用道具 举报

MulinZz 发表于 2016-7-15 02:10:51 | 显示全部楼层
谢谢lz分享
回复 支持 反对

使用道具 举报

huozicheng 发表于 2016-9-12 11:46:02 | 显示全部楼层
jQuery append array比较快的原因应该是jQuery内部预先处理了array里面的元素,所以总体只做一次DOM manipulate。
然而一个一个append 元素的话, 每次append都要做DOM manipulate,所以就会慢。 DOM的操作很昂贵。
回复 支持 反对

使用道具 举报

huozicheng 发表于 2016-9-12 11:49:59 | 显示全部楼层
f.baz(); 应该是1 吧?
回复 支持 反对

使用道具 举报

seaskymonster 发表于 2016-9-13 05:11:25 | 显示全部楼层
huozicheng 发表于 2016-9-12 11:49. visit 1point3acres.com for more.
f.baz(); 应该是1 吧?

我觉得也是1, 在 这个新创建的scope 里面,定义了一个变量a, 所以在 baz这个函数的closure 里面,a refer的就是这个局部变量 a, 而不是Foo传进来的params a . 所以应该是1.
回复 支持 反对

使用道具 举报

 楼主| taybson 发表于 2016-9-13 05:33:20 | 显示全部楼层
huozicheng 发表于 2016-9-12 11:49
f.baz(); 应该是1 吧?

不好意思, 是我写错了
回复 支持 反对

使用道具 举报

 楼主| taybson 发表于 2016-9-13 05:33:33 | 显示全部楼层
seaskymonster 发表于 2016-9-13 05:11
我觉得也是1, 在 这个新创建的scope 里面,定义了一个变量a, 所以在 baz这个函数的closure 里面,a ref ...

不好意思,是我写错了
回复 支持 反对

使用道具 举报

 楼主| taybson 发表于 2016-9-13 05:36:28 | 显示全部楼层
huozicheng 发表于 2016-9-12 11:46
jQuery append array比较快的原因应该是jQuery内部预先处理了array里面的元素,所以总体只做一次DOM manipu ...

jquery确实很方便,jquery内部dom操作比较,这种批量处理的方式确实是快。

但是和原生的dom操作比较,还是慢,并且慢了很多。
.鐣欏璁哄潧-涓浜-涓夊垎鍦
当时的面试官jquery比较熟,但是估计已经把原生dom忘得差不多了。所以要他解释为什么快,他也没有解释很清楚。. Waral 鍗氬鏈夋洿澶氭枃绔,

我当时也不确定,但是面试之后经过测试,还是原生的dom操作比较快。
-google 1point3acres
可以参照我上边留下的codepen链接。
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 03:20

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表