《数据科学面试40+真题讲解》,K神本年度最后一次开课


一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
天天打游戏、照样领工资,
你要不要来?
把贵司招聘信息放这里
查看: 3936|回复: 13
收起左侧

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

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

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

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

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

x

. From 1point 3acres bbs
面试时间: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?
. Waral 鍗氬鏈夋洿澶氭枃绔,


以下代码是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);
  };
};
. 1point3acres.com/bbs
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;
};
. from: 1point3acres.com/bbs
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?

```


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

使用道具 举报

lillian0 发表于 2016-7-14 13:15:58 | 显示全部楼层
好厉害 好全!
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
求加楼主微信
回复 支持 反对

使用道具 举报

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
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-google 1point3acres
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操作比较,这种批量处理的方式确实是快。-google 1point3acres

但是和原生的dom操作比较,还是慢,并且慢了很多。

当时的面试官jquery比较熟,但是估计已经把原生dom忘得差不多了。所以要他解释为什么快,他也没有解释很清楚。

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

使用道具 举报

zli82015 发表于 2017-3-2 09:43:50 | 显示全部楼层
谢谢LZ 分享。

Ways to add addtional stylesheets on bootstrap?

把别的CSS link 放到bootstrap link 下面吗?

谢谢。
回复 支持 反对

使用道具 举报

 楼主| taybson 发表于 2017-3-2 13:26:55 | 显示全部楼层
zli82015 发表于 2017-3-2 09:43
谢谢LZ 分享。

Ways to add addtional stylesheets on bootstrap?

不是,你可以研究一下CSS的specificity,就是不同的组合有不同的权重

https://specificity.keegan.st/
回复 支持 反对

使用道具 举报

zli82015 发表于 2017-3-3 11:20:29 | 显示全部楼层
taybson 发表于 2017-3-2 13:26
不是,你可以研究一下CSS的specificity,就是不同的组合有不同的权重. more info on 1point3acres.com

https://specificity.keegan.st/

好的,好的。我知道了,谢谢楼主。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-11-25 06:48

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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