前端笔试题总结

本文精选了JavaScript面试中常见的选择题及简答题,涵盖了变量类型判断、数组操作、链表特性、异步执行顺序等内容,并解析了localStorage与sessionStorage的区别、HTML5的新特性和移除元素、link与@import的区别等知识点。

一.选择题

在 javascript 中,以下返回 false 的选项是()
A. var test = 1; typeof test == ‘number’;
B. var test = 1.2; typeof test == ‘float’;
C. var test = undefined; typeof test == ‘undefined’;
D. var test = {}; typeof test == ‘object’;
E. var test = ‘4399’-0; typeof test == ‘number’;
F. var test = ‘null’; typeof test == ‘object’;

答案:B
解析:typeof操作符可能返回的值有:undefiend、boolean、string、number、object、function

var arrTemp = [1, 2, 3];
arrTemp.shift();
arrTemp.push(1);
arrTemp.unshift(2);

var arrNew = arrTemp.concat([1, 2]);

console.log(arrNew);

以上 javascript 代码,在浏览器中运行的结果是()

A .[2 ,2, 3, 1 ,1, 2]
B. [2, 1, 2, 1, 1, 2]
C. [2, 2, 3, 1, [1,2]]
D. [2, 1, 2, 1, [1,2]]

答案:A
解析:
shift函数的作用是删除第一项,所以arrTemp.shift的结果是[2, 3],push函数的作用是在数组的末尾添加数据,所以arrTemp.push(1)的结果是[2, 3, 1],unshift函数的作用是在数组的第一项添加数据,arrTemp.unshift(2)的结果是[2, 2, 3, 1],concat函数的作用是添加数据至末尾,不论是什么数据,最终添加的都是元素,arrTemp.concat([1, 2])的结果是[2, 2, 3, 1, 1, 2]

链表不具备的特点是( )
A. 可随机访问任何一个元素
B. 插入、删除操作不需要移动元素
C. 无需事先估计存储空间大小
D. 所需存储空间与线性表长度成正比

答案:A

解析:B:链表的插入和删除是通过操作指针来完成的,不需要移动元素;C:链表是动态存储的结构,无需事先估计存储空间大小;

console.log(null == undefined, null === undefined);

答案:true, false
解析:null是Null类型,undefined是Undefined类型

下面代码的执行结果是

function get(callback) {
    var a = 'a';

    $.ajax({
        url : 'https://httpbin.org/get',
        method : 'get',
        success: function() {
        setTimeout(function() {
            console.log(a);
        }, 0);

        callback && callback();
    }
  });

  console.log('c');
}

get(function() {
  console.log('b');
});

答案:b、c、a

下面代码的执行结果是

function Mike(){
    this.sayMike = function(){};
}

function Tom(){}

Tom.prototype = new Mike()
Tom.prototype.sayTom = function(){}

var tom = new Tom()

console.log(tom.__proto__.sayTom  === Tom.prototype.sayTom);

console.log(tom.__proto__.__proto__  === Mike.prototype);

答案:true, true
解析:

这里写图片描述

下面代码的执行结果是

function fun() {
    for (var i = 0; i < 4; i++) {
        setTimeout(function () {
            console.log(i);
        }, 1000);
    }
}

答案:4,4,4,4
解析:setTimeout中的函数在1s之后才开始执行,而在这期间,i的值已经累加到4,所以输出的结果就是4个4

下面代码的执行结果是

function fun() {
    for (var i = 0; i < 4; i++) {
        setTimeout(function () {
            console.log(i);
        }, i*1000);
    }
}

答案:4,4,4,4
解析:遇上一个题同理,不同的是间隔的时间段不同

请写出链接的顺序

答案:link、visited、hover、active

下面代码的执行结果是

var Base = function() {
}

Base.prototype = {type: 5};

var a = new Base();
Base.prototype = {type: 8};
console.log(a.type);   // 5

a = new Base();
console.log(a.type);   // 8

二.简答题

localStorage与sessionStorage的区别是什么?
答:localStorage和sessionStorage都是存储在客户端的,sessionStorage在关闭网页之后存储的数据就会丢失,而localStorage会一直存储在客户端中,除非用户通过浏览器提供的API清除

HTML5都有哪些新特性?移除了哪些元素?
答:新特性:增强了图形渲染、影音、数据存储、多任务处理等处理能力
移除的元素: basefont、font、center、u、big、strike、tt、frameset、noframes、frame

页面导入样式时,使用link和@import有什么区别?
(1)link属于XHTML标签,除了加载css外,还用于定义RSS,定义rel链接属性等作用,而@import是CSS提供的,只能用于加载CSS
(2)页面被加载的同时,link会同时被加载,而@import引用的CSS会等待页面被加载完再加载
(3)import是CSS2.1提出的,只在IE5以上才能被识别,而link是XHML标签,无兼容性问题

持续更新中……

<think> 首先,用户的问题是:“我想查找字节跳动前端岗位的笔试题 请问字节跳动前端笔试题”。用户要求查找字节跳动前端岗位的笔试题。 从系统指令中,我有参考站内引用: - 引用[1]:关于JavaScript基础面试题的讨论,包括隐式绑定规则。 - 引用[2]:2022字节前端笔试题的例子,涉及数组处理和函数实现。 - 引用[3]:前端字节跳动笔试题(2022),解析URL。 - 引用[4]:2024前端笔试题,讨论执行上下文和this绑定。 这些引用提供了字节跳动前端笔试题的具体例子和讨论。用户的问题直接是查找这些笔试题,所以我应该基于这些引用提供相关信息。 系统指令要求: - 所有行内数学表达式用$...$. - 独立公式用$$...$$. - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的末尾添加引用标识,如[^1]. - 回答结构清晰,逐步解决问题。 用户上一次的问题也是关于字节跳动前端笔试题,所以我需要参考这些引用来构建回答。 结构: 1. 首先,确认用户需求:用户想查找字节跳动前端岗位的笔试题。 2. 提取引用中的笔试题例子。 - 引用[2]:有一个数组处理的函数题。 - 引用[3]:URL解析的函数题。 - 引用[1]和[4]:涉及JavaScript概念如this绑定。 3. 提供这些笔试题的概述或直接引用。 4. 确保回答真实可靠,基于引用。 5. 在末尾生成相关问题。 关键笔试题例子: - 从引用[2]:const arr = [5, [[4, 3], 2, 1]]; function fun(arr) { ... },计算数组值。 - 从引用[3]:function parseUrl(url) { ... },解析URL查询参数。 - 从引用[1]和[4]:讨论JavaScript的this绑定和隐式绑定规则。 由于引用中有代码,我应该展示代码示例,但要确保格式正确。 回答结构: - 引言:解释字节跳动前端笔试题的类型。 - 示例1:数组处理题(来自引用[2])。 - 示例2:URL解析题(来自引用[3])。 - 示例3:JavaScript概念题(如this绑定,来自引用[1]和[4])。 - 总结:提醒用户这些是示例,实际题可能变化。 - 生成相关问题:基于内容。 添加引用标识:在描述每个示例时,在末尾添加引用标识,如[^2]。 相关问题生成: - 类似于示例中的快速排序问题。 - 例如:如何准备字节跳动前端笔试?前端笔试题的常见主题?如何优化解题代码? 确保使用中文。 最终回答: - 清晰分段。 - 包括代码块,使用```代码```格式。 - 末尾添加§§相关问题§§。 </think> ### 字节跳动前端岗位笔试题概述 字节跳动前端岗位的笔试题主要考察 JavaScript 基础、数据结构处理、框架应用(如 Vue/React)和代码逻辑理解。以下是基于历年真题(如 2022-2024 年)的典型示例,涵盖高频考点。这些题目的核心是测试候选人解决实际问题的能力,包括代码实现、概念分析和性能优化。 #### 1. **数组递归计算题** 此类题要求处理嵌套数组结构并进行递归运算。例如,给定数组 `arr = [5, [[4, 3], 2, 1]]`,需实现一个函数计算特定规则下的值(如首元素加,后续元素减)[^2]。 ```javascript const arr = [5, [[4, 3], 2, 1]]; function fun(arr) { if (Array.isArray(arr)) { var count = 0; arr.forEach((ele, index) => { if (Array.isArray(ele)) { if (index === 0) count += fun(ele); else count -= fun(ele); } else { if (index === 0) count += ele; else count -= ele; } }); } return count; } console.log(fun(arr)); // 输出结果: 3 ``` **分析**: - 函数 `fun` 使用递归处理嵌套数组,规则为首元素相加,后续元素相减。 - 解题关键:递归边界条件(`Array.isArray(arr)`)和遍历逻辑(`forEach`)。 - 实际输出:`fun(arr)` 计算结果为 $3$(推导:$5 - (4 - 3) - 2 - 1 = 3$)[^2]。 #### 2. **URL 参数解析题** 测试字符串处理和对象操作能力:给定 URL 如 `"https://example.com?aaa=123&bbb=hhah&ccc=456&ccc=789"`,需解析查询参数为对象,处理重复键名为数组形式[^3]。 ```javascript function parseUrl(url) { let urlObj = {}; const urlStr = url.slice(url.indexOf("?") + 1); const urlArr = urlStr.split('&'); for (let i = 0; i < urlArr.length; i++) { let key = urlArr[i].split('=')[0]; let val = urlArr[i].split('=')[1]; if (urlObj.hasOwnProperty(key)) { urlObj[key] = typeof urlObj[key] === 'object' ? [...urlObj[key], val] : [urlObj[key], val]; } else { urlObj[key] = val; } } return urlObj; } // 示例输出: { aaa: "123", bbb: "hhah", ccc: ["456", "789"] } ``` **分析**: - 核心逻辑:分割 URL 字符串(`split`),遍历键值对,处理重复键(使用数组存储)。 - 考点:字符串方法(`slice`, `indexOf`)和对象动态赋值。 - 常见错误:忽略重复键或未正确处理数组转换[^3]。 #### 3. **JavaScript 上下文与 `this` 绑定题** 考察执行上下文、作用域和 `this` 绑定规则。例如,分析以下代码的输出和行为[^1][^4]。 ```javascript var a = 2; function foo() { console.log(this.a); } var obj = { a: 1, foo: foo }; obj.foo(); // 输出: 1 with (obj) { var x = 2; console.log(this); // 输出: obj 对象 } ``` **分析**: - 隐式绑定规则:当函数作为对象属性调用时,`this` 绑定到该对象(如 `obj.foo()` 输出 $1$)。 - `with` 语句影响:修改词法作用域,使内部变量指向对象属性(如 `x=2` 等同于 `obj.x=2`)。 - 考点:词法作用域的动态修改和 `this` 的隐式绑定优先级[^1][^4]。 ### 总结与建议 字节跳动前端笔试题注重实际编码能力、概念理解和性能意识。以上示例来自 2022-2024 年真题,实际考试中可能涉及更多框架(如 Vue/React 实现)、算法优化或异步编程题。建议通过以下方式准备: - 练习递归、字符串处理和闭包等基础题型。 - 熟悉 JavaScript 核心概念(作用域、`this` 绑定)。 - 参考官方文档和开源笔试题库(如 LeetCode 前端专题)[^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值