• 欢聚时代2017秋招笔试 编程题


    感觉yy的笔试题出的很用心,不会随便拿一下数据结构什么的题目过来糊弄~出的题目也几乎没有见过原题。

    当然,个人答得好不好是另外一回事了,不会做是自己知识没掌握好,但是题目确实个个经典~

    填空、不定向选择、问答、编程,其他不怎么记得了,编程题目倒是还能想起来:

    点击ul中的li标签删除

     1 <html>
     2 <head>
     3     <title></title>
     4 </head>
     5 <body>
     6     <script>
     7         window.onload = function () {
     8             var li = document.getElementsByTagName('li');
     9             for(var i = 0; i<li.length; i++) {
    10                     li[i].onclick = function () {
    11                       this.parentNode.removeChild(this);
    12                     }
    13             }
    14         }
    15     </script>
    16     <ul class="itemList">
    17         <li>item 1</li>
    18         <li>item 2</li>
    19         <li>item 3</li>
    20         <li>item 4</li>
    21         <li>item 5</li>
    22         <li>item 6</li>
    23     </ul>
    24 </body>
    25 </html>

    第一题不难,但是我好像没答好,错的地方应该是在

    this.parentNode    
    //用以下代替
    var ul = document.getElementByClassName('itemList');
    ul = ul[0];        //忘记写上这句ORZ

    html css3实现圆来回滚动

    这本也不是什么难题,但是我错的有点离谱了ORZ,把margin-left 写成了 padding-left,变成了来回拉伸了吧应该!!!

     1 <html>
     2 <head>
     3     <title></title>
     4 </head>
     5 <body>
     6     <style>
     7         .circle {
     8             width: 100px;
     9             height: 100px;
    10             background-color: red;
    11             border-radius: 50%;
    12             animation: move 3s infinite;
    13         }
    14 
    15         @keyframes move {
    16             0% {
    17                 margin-left: 0px;
    18             }
    19 
    20             50% {
    21                 margin-left: 400px;
    22             }
    23 
    24             100% {
    25                 margin-left: 0px;
    26             }
    27         }
    28     </style>
    29     <div class="circle"></div>
    30 </body>
    31 </html>

    我记得我答题的时候写的代码是如下:

     1 <html>
     2 <head>
     3     <title>aaa</title>
     4 </head>
     5 <body>
     6     <style>
     7         .circle {
     8             width: 100px;
     9             height: 100px;
    10             background-color: red;
    11             border-radius: 50%;
    12             animation: move 3s infinite linear;
    13         }
    14 
    15         @keyframes move {
    16             0% {
    17                 margin-left: 0px;
    18                 translate:rotate(0deg);
    19             }
    20 
    21             25% {
    22                 padding-left: 200px;
    23                 translate:rotate(180deg);
    24             }
    25 
    26             50% {
    27                 padding-left: 400px;
    28                 translate:rotate(360deg);
    29             }
    30              75% {
    31                 padding-left:200px;
    32                 translate:rotate(180deg);
    33             }
    34             100% {
    35                 padding-left: 0px;
    36                 translate:rotate(0deg);
    37             }
    38         }
    39     </style>
    40     <div class="circle"></div>
    41 </body>
    42 </html> 

    见笑见笑ORZ、。。

    第三题:

    获取cookie的函数

    这个题我刚好之前看过一篇文章:

    有兴趣或者看不懂下面的代码可以阅读一下;

    1 function getCookie(name) {
    2     var a;
    3     var r = new RegExp(name+"=([^;]*)(;|$)");
    4     if(a = document.cookie.match(r))
    5         return a[1];
    6     else
    7         return null;
    8 }

    唉~很遗憾的是我中毒太深了,之前也没搞懂unescape和escape的编码和解码,以至于我return a[1]的时候加了unescape(a[1]);然后还用了test来匹配= =???

    如果你不是很懂正则表达式,我这里简单解释一下,因为document.cookie的存取方式是字符串,而且是以key、value的形式储存的,也就是:

    "username=lingjiawen; password=123456; xxx=xxxxxx"

    所以,匹配的时候使用

    /name=([^;]*)(;|$)/

    这个正则表达式来匹配,[^;]* 指的是不匹配";",然后*表示匹配前面元字符0次或多次。

    a数组第一个值存的就是匹配值,第二个值存的就是([^;]*)这个匹配值,也就是=号后面的值,假如上面的name="username"

    那么a[0]就是"username=lingjiawen",而a[1]就是"lingjiawen",而a[2]便是";"。

    写一个EventEmitter函数,包含on,once,off,trigger方法

     

     1 class EventEmitter {
     2     constructor() {
     3         this.events = {};
     4         this.getEvents = this.getEvents.bind(this);
     5         this.getListener = this.getListener.bind(this);
     6         this.on = this.on.bind(this);
     7         this.off = this.off.bind(this);
     8         this.once = this.once.bind(this);
     9         this.trigger = this.trigger.bind(this);
    10         this.removeEventListener = this.removeEventListener.bind(this);
    11     }
    12 
    13     getEvents() {
    14         return this.events;
    15     }
    16 
    17     getListener(event) {
    18         var events = this.getEvents();
    19         return events[event];
    20     }
    21 
    22     on(event, listener, time) {
    23         var listeners = this.getListener(event);
    24         var listenerWrap = {
    25             listener: listener,
    26             time: time
    27         };
    28         listeners.push(listener);
    29     }
    30 
    31     once(event, listener) {
    32         return this.on(event, listener, 1);
    33     }
    34 
    35     trigger(event, args) {
    36         var listeners = this.getListener(event);
    37         for(let i=0; i<listeners.length; i++) {
    38             var listener = listeners[i];
    39             listener.time --;
    40             if(listener.time === 0) {
    41                 this.removeEventListener(listener);
    42             }
    43             listener.listener.apply(this, args||[]);
    44         }
    45     }
    46 
    47     off(event) {
    48         var events = this.getEvents();
    49         events[event] = [];
    50     }
    51 
    52     removeEventListener(event, listener) {
    53         var events = this.getEvents();
    54         var listeners = evetnts[event];
    55         for(let i=0; i<listeners.length; i++) {
    56             if(listener == listeners[i]) {
    57                 delete listeners[i];
    58             }
    59         }
    60     }
    61 
    62 }

    这题用了ES6写的,对不对不是很清楚~

    以上题目有更好的想法或者答案、或者我的答案有错误,欢迎留言~!!

  • 相关阅读:
    sort-list leetcode C++
    sum-root-to-leaf-numbers leetcode C++
    sum-root-to-leaf-numbers leetcode C++
    path-sum-ii leetcode C++
    path-sum-ii leetcode C++
    0139 函数的两种声明方式
    0138 函数可以调用另外一个函数
    0137 函数案例:数组翻转、冒泡排序、判断闰年
    0136 JavaScript中 arguments 的使用
    0135 函数的返回值:return 语句、终止函数 、只能返回一个值、没有 return 返回 undefined、break &continue&return 的区别
  • 原文地址:https://www.cnblogs.com/ljwTiey/p/7543787.html
Copyright © 2020-2023  润新知