前端笔试题

拼多多2018校招前端笔试题之一,完成一个函数对各种变量进行复制且不影响原变量。

   /**
     * 各种变量的复制
     * 
     * @variable 待复制的变量
     * @return 复制结果
     */
    function copy(variable) {
      var result;
      if(typeof variable != 'object') {
        result = variable;
      } else {
        if(Array.isArray(variable)) {
          result = variable.slice(0);
        } else {
          result = {};
          for(var key in variable) {
            result[key] = copy(variable[key]);
          }
        }
      }
      return result;
    }

美团笔试题, 密码验证,要求

  1. 密码由小写字母、大写字母、数字构成。且必须同时含有三者。
  2. 不能以数字开头
  3. 至少8位
    显然这个题主要考察正则,下面给出我的答案
var reg = /^[a-zA-Z]{1}(?![0-9a-z]+$)(?![0-9A-Z]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{7,}$/;

//正则解释:
^[a-zA-Z]{1}        //以一个字母开头
(?![0-9a-z]+$)     //后面存在大写(存在不以数字或者小写结尾的位置)
(?![0-9A-Z]+$)    //后面存在小写 (存在不以数字或者大写结尾的位置)
(?![a-zA-Z]+$)     //后面存在数字 (存在不以大写或者小写结尾的位置)
[0-9A-Za-z]{7,}$  //后面是至少7位大小写字母数字

//或者
var reg = /^[a-zA-Z]{1}(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9A-Za-z]{7,}$/;

/?!exp/ 当前位置后存在不匹配exp的字符, 如/a(?!\d)/能匹配'ab',但是不能匹配'a1'。所以/?!exp$/匹配的就是当前位置后面不以exp结束的位置。这里有一个有意思的地方,由于?!匹配的是当前位置后面的字符,那么可以想象 (?!exp)$ 是等价与$的。比如/^a$//^a(?!\d)$/都只能匹配'a'。

/?=exp/ 当前位置后存在匹配exp的字符, 如/a(?=\d)/不能能匹配'ab',但是能匹配'a1'。功能与/?!exp/相反。所以(?=.*[0-9])匹配的就是当前位置后面存在以数字结束的位置,也就是必须存在数字

华为笔试题 (主机名排序)
主机名由多级域名组成,自右向左,依次是顶级域名、二级域名、三级域名,例如huawei.com.cn,cn是顶级域名,com是二级域名,huawei是
三级域名。
请编写一段程序,实现主机名排序功能,排序规则以及限制条件如下:
1、主机名按照域名等级排序,即先顶级域名排序,再二级域名排序,最后是三级域名排序;
2、每一级域名排序时,参考字典顺序定义,abc 排在 abf,abc 排在 abcd 前。
3、输入的主机名确保符合以下规则
A、主机名以字符串形式给出,连续的两个主机名,以’$’符号分开;
B、主机名中仅包含小写英文字母和分隔符’.’;
C、主机名中没有连续的’.’,不以’.’开始,也不以’.’结束;
D、主机名不存在重复。
输入
输入为字符串,包含多个主机名,主机名之间以’$’符号分开。
输出
输出为经过排序后的字符串,主机名之间以’$’符号分开。
样例输入
huawei.com.cn$mail.huawei.com$imail.huawei.com$cctv.com.cn$bctv.com.cn

样例输出
cctv.com.cn$huawei.com.cn$imail.huawei.com$mail.huawei.com
cctv.com.cn$huawei.com.cn$imail.huawei.com$mail.huawei.com

var domains = ['mail.huawei.com','huawei.com','teltalk.org','google.com.hk','imail.huawei.com'];
function hostSort () {
  var domainList = [];
  for(var i=0; i object2['top']) { 
          return 1; 
      } else if(object1['top'] < object2['top']) {
          return -1; 
      } else {
        if (object1['second'] > object2['second']) { 
            return 1; 
        } else if(object1['second'] < object2['second']) {
            return -1; 
        } else {
          if(object1['third'] && object2['third']) {
            if(object1['third'] > object2['third']) {
              return 1;
            } else if(object1['third'] < object2['third']) {
              return -1;
            } else {
              return 0;
            }
          } else {
            if((!object1['third']) && object2['third']) {
              return -1;
            } else {
              return 1;
            }
          }
        }
      } 
  });
  domains = [];
  for(var i=0; i

你可能感兴趣的:(前端笔试题)