百度前台js笔试题与答案

百度前台JS笔试题攻略

0. 背景介绍

该题是百度前端技术学院(IFE)啊2017年的提前批笔试题,主要考察前端JavaScript编程能力。该题面分为多个部分,主要要求在限制条件下,用JavaScript实现代码功能。

1. 题目分析

1.1 题目描述

该题面共分为5个部分,包括字符串、数组、对象、ES6、正则表达式等内容。

1.2 题目要求

针对每个部分的题目要求,需要编写符合要求的JavaScript代码,并在浏览器的控制台输出结果。

1.3 注意事项

  • 代码以函数为单位,可重复利用;
  • 避免使用jQuery等第三方库;
  • 不允许直接使用原生API;
  • 不能修改模板代码。

2. 代码解析

下面分别对每个部分的题目进行解析:

2.1 字符串

  • 题目:将字符串转化为驼峰式写法
  • 要求:实现如函数 toCamel(str),将 str 转化为驼峰式写法,如 toCamel("hello_world"),返回"helloWorld"
function toCamel(str) {
  return str.replace(/_+(.)/g, function(match, p1) {
    return p1.toUpperCase();
  });
}
console.log(toCamel("hello_world"));
  • 题目:去掉字符串中的数字和空格
  • 要求:实现如函数 trim(str),将 str 中的数字和空格都去除掉,如 trim(" 12 3 4qw er ty"),返回"qwert"
function trim(str) {
  return str.replace(/[0-9\s]/g, "");
}
console.log(trim(" 12 3 4qw er ty"));

2.2 数组

  • 题目:数组去重
  • 要求:实现如函数 unique(arr),将 arr 中的重复元素去掉,返回不重复的数组,如 unique([1,2,3,3,2,4]),返回[1,2,3,4]
function unique(arr) {
  var obj = {},
      newArr = [],
      len = arr.length;
  for (var i = 0; i < len; i++) {
    if (!obj[arr[i]]) {
      obj[arr[i]] = true;
      newArr.push(arr[i]);
    }
  }
  return newArr;
}
console.log(unique([1,2,3,3,2,4]));
  • 题目:冒泡排序算法
  • 要求:实现如函数 bubbleSort(arr),利用冒泡排序算法对 arr 数组排序,返回排序后的数组,如 bubbleSort([3,2,1,5,4]),返回[1,2,3,4,5]
function bubbleSort(arr) {
  var len = arr.length;
  for (var i = 0; i < len; i++) {
    for (var j = 0; j < len - 1 - i; j++) {
      if (arr[j] > arr[j+1]) {
        var temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
      }
    }
  }
  return arr;
}
console.log(bubbleSort([3,2,1,5,4]));

2.3 对象

  • 题目:深度克隆对象
  • 要求:实现如函数 cloneObject(obj),将 obj 对象进行深度克隆,返回克隆后的对象
function cloneObject(obj) {
  var newObj = {};
  for (var key in obj) {
    if (typeof obj[key] === "object") {
      newObj[key] = cloneObject(obj[key]);
    } else {
      newObj[key] = obj[key];
    }
  }
  return newObj;
}
console.log(cloneObject({a: 1, b: {c: 2}}));
  • 题目:对象属性的依赖收集
  • 要求:实现如函数 updateView(obj),通过对象属性的依赖收集功能,动态更新 obj 的属性值,并重新渲染到页面上对应的元素
<div id="app"></div>
var obj = {
  a: 1,
  b: 2
};
updateView(obj);

function updateView(obj) {
  var app = document.getElementById("app");
  app.innerHTML = "<p>" + obj.a + "</p><p>" + obj.b + "</p>";
  Object.defineProperty(obj, "a", {
    get: function() {
      return this._a;
    },
    set: function(value) {
      this._a = value;
      app.children[0].innerText = value;
    }
  });
  Object.defineProperty(obj, "b", {
    get: function() {
      return this._b;
    },
    set: function(value) {
      this._b = value;
      app.children[1].innerText = value;
    }
  });
}

2.4 ES6

  • 题目:箭头函数的使用
  • 要求:实现如函数 getMax(arr),用箭头函数的方式获取数组 arr 中的最大值,返回最大值,如 getMax([1,3,5,7,9]),返回9
const getMax = arr => Math.max(...arr);
console.log(getMax([1,3,5,7,9]));
  • 题目:es6中let与const的使用
  • 要求:实现如函数 sortNums(arr),对 arr 数组进行升序排序,并保证排序之后数组的地址不变
function sortNums(arr) {
  let tempArr = [...arr];
  return tempArr.sort(function(a, b) {
    return a - b
  });
}

2.5 正则表达式

  • 题目:验证邮箱格式是否正确
  • 要求:实现如函数 isEmail(str),验证其参数 str 是否符合邮箱格式,符合格式返回true,否则返回false
function isEmail(str) {
  var pattern = /^([\w-\.]+)@([\w-]+\.)+[\w-]{2,4}$/;
  return pattern.test(str);
}
console.log(isEmail("example@123.com"));
  • 题目:验证手机号码格式是否正确
  • 要求:实现如函数 isMobilePhone(str),验证其参数 str 是否符合手机号码格式,符合格式返回true,否则返回false
function isMobilePhone(str) {
  var pattern = /^1[0-9]{10}$/;
  return pattern.test(str);
}
console.log(isMobilePhone("13800138000"));

3. 总结

该题是一道比较全面的前端JavaScript编程练习题,覆盖了字符串、数组、对象、ES6、正则表达式等各个方面的知识点。通过对该题的思考和解答,可以有效的提升自己的前端编程能力。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:百度前台js笔试题与答案 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • jQuery Mobile Pagecontainer隐藏事件

    jQuery Mobile是一款用于移动端web开发的框架,其中包含了丰富的事件和组件。其中,Pagecontainer组件是用于管理jQuery Mobile应用中的页面转换和导航的。本篇攻略将讲解如何使用Pagecontainer隐藏事件(pagecontainershow)来实现页面隐藏事件的响应。 什么是页面隐藏事件 在jQuery Mobile应用…

    jquery 2023年5月12日
    00
  • jQWidgets jqxScheduler destroy()方法

    jQWidgets jqxScheduler destroy()方法详解 destroy()是jQWidgets jqxScheduler插件的一个方法,用于销毁日程表控件及其相关的所有元素,并将所有绑定的事件和数据清除。 方法语法 destroy(): void 方法参数 此方法不接受任何参数。 方法返回值 此方法不返回任何值。 方法示例 示例一 在这个示…

    jquery 2023年5月11日
    00
  • jQuery验证插件validate使用方法详解

    jQuery验证插件validate使用方法详解 介绍 jQuery验证插件validate是一款基于jQuery的表单验证插件。它可以很轻松地对表单进行验证操作,包括输入内容是否符合要求、是否为空等等。而且该插件的配置选项非常丰富,可以自定义提示信息、错误处理方法等等。 安装 可以通过以下两种方式进行安装:1. 直接下载js文件放在项目中2. 使用CDN引…

    jquery 2023年5月27日
    00
  • AJAX工作原理及优缺点详解

    AJAX是异步JavaScript和XML(Asynchronous JavaScript and XML)的简称,它通过在后台与服务器进行少量数据交换,实现局部刷新页面的效果,从而提升用户的浏览体验。下面,我们来详细讲解AJAX的工作原理和优缺点。 AJAX工作原理 创建XMLHttpRequest对象:在使用AJAX时,首先需要创建XMLHttpRequ…

    jquery 2023年5月27日
    00
  • 如何使用jQuery Mobile创建一个迷你尺寸的Fieldcontain

    如何使用 jQuery Mobile 创建一个迷你尺寸的 Fieldcontain 添加 jQuery Mobile 框架 在 head 标签中添加以下代码: <head> <meta charset="UTF-8"> <title>Mini Fieldcontain</title> &lt…

    jquery 2023年5月12日
    00
  • jQWidgets jqxTree height属性

    jQWidgets jqxTree height属性 jqxTree 是 jQWidgets 提供的一个树形组件,它可以展示层级结构的数据支持多种交互操作。jqxTree 提供了 height 属性,用于设置树形组件的高度。 height属性 height 属性用于设置树形组件高度。可以设置为像素值或百分比值。如果不设置属性,则树形组件的高度将自适应内容高度…

    jquery 2023年5月11日
    00
  • 如何删除选择框的所有选项,然后添加一个选项并使用JQuery选择它

    要删除选择框的所有选项并添加一个新选项,可以使用jQuery的empty()和append()方法。下面是一个完整攻略,包括两个示例说明。 步骤1:创建HTML和CSS 首先,我们需要一个HTML和CSS,以便在页面中显示一个选择框。下面是一个示例HTML和CSS: <!DOCTYPE html> <html> <head&gt…

    jquery 2023年5月9日
    00
  • jQWidgets jqxHeatMap title属性

    jQWidgets jqxHeatMap标题属性攻略 简介 jQWidgets 是一个基于 jQuery 的 UI 组件库,提供了富的 UI 组件和工具可于创建代化应程序。jqxHeatMap 组件用于可视化热图数据。本攻略将详介绍 jqxHeatMap 组件的 title 属性,包括如何使用和示例说明。 使用 jqxHeatMap 组件的 title 属性…

    jquery 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部