资讯专栏INFORMATION COLUMN

2018年前端社招笔试题分享

dcr309duan / 2675人阅读

以下是2018年年初,面某公司的笔试题。为啥现在才分享出来,纯粹是因为之前懒。只分享题,没有答案。

1.请通过代码实现下面的效果

function add(num){
    var total = 0; 
    var curryAdd = function(num){
        total = total + num;
        return total;
    }
    return curryAdd;
}

console.log(add(2)(3)); //结果为5
console.log(add(2)(3)(4)(5)); // 结果为14

2.请回答按钮点击前后,代码中的两个console.log在浏览器控制台的输出信息
并解释现象背后的原因.

let count = 0;

class MyComponent extends React.Component{
  constructor(){
    super();
    this.state = {
      count : count
    };
  }
  
  componentWillMount(){
    this.setState({
      count : ++count
    });
    
    this.setState({
      count : ++count
    });
    
    setTimeout(() => {
      this.setState({
        count : ++count
      });

      this.setState({
        count : ++count
      });
    }, 1000);
  }
  
  componentDidMount(){
    this.button.addEventListener("click", this.onClick.bind(this, "原生浏览器事件"), false);
  }
  
  onClick(info) {
    console.log(info);
    
    this.setState({
      count : ++count
    });
    
    this.setState({
      count : ++count
    });
  }
  
  render() {
    console.log(this.state.count);
    return (
      
Count : {this.state.count}
); } } ReactDOM.render(, mountNode);

3.throttle的简单实现

function throttle(func, duration) {
        // 在这里编写具体实现
}

window.addEventListener("scroll", throttle(func, 50), false);

4.实现一个深度优先搜索算法(非递归)

    
function dfs(tree, name){
    // 请在这里实现
}

var tree = {
    name : "中国",
    children : [
        {
            name : "北京",
            children : [
                {
                    name : "朝阳群众"
                },
                {
                    name : "海淀区"
                },
                {
                    name : "昌平区"
                }
            ]
        },
        {
            name : "浙江省",
            children : [
                {
                    name : "杭州市",
                    code : 0571,
                },
                {
                    name : "嘉兴市"
                },
                {
                    name : "绍兴市"
                },
                {
                    name : "宁波市"
                }
            ]
        }
    ]
};

var node = dfs(tree, "杭州市");
console.log(node);    // { name: "杭州市", code: 0571 }

5.编写一个简单的自定义事件处理器: 1.具备 on 方法绑定事件, 2.具备 off 方法解绑事件

function EventEmitter () {
    // TODO

}

var emitter = EventEmitter();

emitter.on("foo", function(e){
    console.log("listening foo event 1", e);
});

emitter.on("foo", function(e){
    console.log("listening foo event 2", e);
});

emitter.on("bar", function(e){
    console.log("listening bar event", e);
});

// 监听全部事件
emitter.on("*", function(e){
    console.log("listening all events");
});

emitter.trigger("foo", {name : "John"});
emitter.trigger("bar", {name : "Sun"});
emitter.trigger("*", {name : "Sun"});
emitter.off("foo");

6.请用原生 JS 实现 DOM 拖动效果,尽量多考虑兼容以及其他可能的情况

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100120.html

相关文章

  • 一道2016年nice的校招笔试题引发的思考

    摘要:注意点这个代码是严格依赖环境的,例如中和是连续的,在编译器中,和之间有一个空间。注意点当把与交换之后,程序将不会出现死循环,但是程序的越界访问报错是少不了的。注意点这种优化是无差别的,即无论你的代码是否越界,都会进行这样的优化。 目录 声明 原题 题目详细解析 运行结果: 题目...

    shixinzhang 评论0 收藏0
  • 【回顾九月份第二周】 前端你该知道的事儿

    摘要:顺便一说,这首歌的原唱是秋田,中岛当年嗓子坏了,才有这歌。中文是直接翻译来的,作曲是秋田。一部电影春夏秋冬又一春春夏秋冬又一春是由金基德执导,金英民吴英秀金基德主演的一部韩国电影。年月日于韩国上映。 原链接: http://bluezhan.me/weekly/#/9-2 1、web前端 Angular vs. React vs. Vue: A 2017 comparison 9 S...

    sixgo 评论0 收藏0
  • 【回顾九月份第二周】 前端你该知道的事儿

    摘要:顺便一说,这首歌的原唱是秋田,中岛当年嗓子坏了,才有这歌。中文是直接翻译来的,作曲是秋田。一部电影春夏秋冬又一春春夏秋冬又一春是由金基德执导,金英民吴英秀金基德主演的一部韩国电影。年月日于韩国上映。 原链接: http://bluezhan.me/weekly/#/9-2 1、web前端 Angular vs. React vs. Vue: A 2017 comparison 9 S...

    levius 评论0 收藏0
  • 2018年前端面试题

    摘要:三月去面试了几家公司,不大不小,把面试时面试官问的问题总结一下供大家参考。很明显,面试时问题以及出现频率非常高,并且包括,在方面问的比较多的主要是跨域以及。面试时更侧重于在实际项目中,遇到问题你是怎么解决的。 三月去面试了几家公司,不大不小,把面试时面试官问的问题总结一下供大家参考。很明显,面试时问题vue以及react出现频率非常高,并且包括webpack,在JS方面问的比较多的主要...

    beita 评论0 收藏0

发表评论

0条评论

阅读需要支付1元查看
<