栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > web前端

2015年10月豆瓣校招-前端开发工程师面试经历

web前端 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

笔试通过后,HR安排了面试,总共面了三次,豆瓣前端的三个部门各面一次。

三面都有手写代码,非常考察HTML/CSS/JS的基础

  • CSS方面栽倒了布局,虽然考虑到触发content的BFC来解决边缘和float重叠的问题,但是自己确实没有去解决过这个问题,只是概念上理解浮动和BFC,过了时间比较久又忘记了。


    687474703a2f2f68696b656a756e2e636f6d2f626c6f672f77702d636f6e74656e742f75706c6f6164732f323031312f31302f53637265656e2d73686f742d323031312d31302d32362d61742d31312e32372e32322d504d2e706e67

  • 左右垂直居中也是只有大致的思路,但是解决过的都是宽高已知的情况,宽高不定的解决方案并没有给出。
  • JS实现事件代理,然后自己实现一个事件代理的方法,可以代理自定义的事件名称以及回掉函数,想了很长时间,确实不会。
  • JS的DOM知识和基础的对象组合起来的一步一步往深问的问题,能答出来,但是不能精准回答,只能答出个大概,忘记了好多细节。
  • 问了笔试题、css3相关、以及字符串处理的问题,感觉css3的知识是必须的,JS对字符串的处理是必须掌握的。

总结来看,面试很艰难,首先是手写代码,其次是问题一层嵌套一层,难度不断上升。

面完就觉得:百度校招一面问计算机基础不会,然后给自己找借口,这次直接问了前端基础,但是却答得不是很好,磕磕巴巴,要不是面试官人好,一定会被虐死。

笔试

更新于:2015-09-30 23:58:54

29号晚上做了豆瓣的前端工程师的笔试题

一共三道题,豆瓣推荐使用markdown编写答案,下面是我做出来的解答

第一题

写一个名为testSymbols的函数,传递的参数为字符串,假如字符串中每个字母都被+包围,例如+a+b+c+d+则返回true,否则返回false

解法:

按照字母分割字符串得到一个元素都说是每个字母的相邻位置,然后判断是否全为+号即可

function testSymbols(str) {  var aStr = str.split(/[a-zA-Z]/);//答题的时候写的是/w/,真是蠢了:w : 字符(字母。数字,下划线)  for (var i = 0; i < aStr.length; i++) {    if (aStr[i] !== '+') {      return false;    }  };  return true;}console.log(testSymbols('++d+-o+u+b--a++-+n+'));console.log(testSymbols('+a+b+c+d+'));

第二题

写一个名为isMagicSum的函数,传递的参数为数组,假如数组中任意元素之和等于最大的元素值则返回true,否则返回false

解法:

  • 使用reduce实现了一个数组求和函数
  • 利用sort排序得到最大值max
  • 遍历所有可能的数组内元素求和的情况放入数组中
  • 循环求和结果数组,判断是否等于max

这里面涉及到JS数组slice的用法

  • 如果slice方法的参数是0,就返回一个从起始位置到原数组最后一个成员的数组,原数组不变
  • 正常使用Array.prototype.slice.call(arguments)来将类似数组的对象转换为数组

这里面用的是第一条浅拷贝

function isMagicSum(arr) {  Array.prototype.sum = function() {    return this.reduce(function(partial, value) {      return partial + value;    })  };  arr = arr.sort(function(a, b) {    return a - b;  });  var max = arr.pop();  console.log(max);  var aSum = [];  for (var i = 0; i < arr.length; i++) {    var copyArr = arr.slice(0);    for (var j = 1; j < copyArr.length; j++) {        copyArr.splice(i, j);      aSum.push(copyArr.sum());    };  };  console.log(aSum);  for (var i = 0; i < aSum.length; i++) {    if (aSum[i] === max) {        return true;    }  }  return false;}console.log(isMagicSum([11, -3, 13, 9, 5]));

第三题

实现移动端的Switch按钮的效果,切换时要有颜色渐变

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>switch</title>  <style type="text/css">  .switch {    width: 52px;    height: 31px;    position: relative;    border: 1px solid #dddddd;    background-color: #dddddd;    box-shadow: #dddddd 0 0 0 0 inset;    border-radius: 20px;    border-top-left-radius: 20px;    border-top-right-radius: 20px;    border-bottom-left-radius: 20px;    border-bottom-right-radius: 20px;    background-clip: content-box;    display: inline-block;    -webkit-appearance: none; //去除移动设备下默认的样式    user-select: none;  //去除选中的样式    outline: none;  //去除chrome自带的outline  }  .switch:before {    content: '';    width: 29px;    height: 29px;    position: absolute;    top: 0px;    left: 0;    border-radius: 20px;    border-top-left-radius: 20px;    border-top-right-radius: 20px;    border-bottom-left-radius: 20px;    border-bottom-right-radius: 20px;    background-color: #fff;    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);  }  .switch:checked {    border-color: #6dcfb5;    box-shadow: #6dcfb5 0 0 0 16px inset;    background-color: #6dcfb5;  }  .switch:checked:before {    left: 21px;  }  .switch.switch-douban {    transition: background-color ease 0.4s;  }  .switch.switch-douban:before {    transition: left 0.3s;  }  .switch.switch-douban:checked {    box-shadow: #dddddd 0 0 0 0 inset;    background-color: #6dcfb5;    transition: border-color 0.4s, background-color ease 0.4s;  }  .switch.switch-douban:checked:before {    transition: left 0.3s;  }  </style></head><body>  <input class="switch switch-douban" type="checkbox" checked></body></html>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/274248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号