关于前端一些笔试题目

本文深入解析JavaScript中的类型转换、位运算、a标签的target用法、数组操作、HTML页面转义字符、字符串反转、类的私有属性实现、sort方法设计模式及算法、void(0)返回值、null的typeof结果等核心知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、关于类型转换: null * 5 = ?
解:答案为0,因为运算时,实际上是js引擎要进行如下操作Number(null) * 5 = 0 * 5 = 0,就像这样[] == ![]也是成立的。


2、-13 >> 2 = ?
解:答案为-4,这是有符号的位运算问题,太坑了,反正就算看几遍,不常用还是会忘,这里就不解释了。


3、 a标签的target有哪些?
解:_blank,_parent,_top,_self(注意,要知道分别什么作用)。


4、[1,2,3,4,5,6,7].slice(-3,-1)的结果?
解:这是一道非主流的题目,实际上这里的负值指的是从右向左,所以结果应该是[5,6](太奇葩的用法了,不过应该有一定的实用价值) 。


5、html页面中的主要的转义字符?
解: 小于号:<大于号>空格: 等等。(话说,谁会去记这个,不过咋看来还是挺好记得)。


6、怎么将一个字符串"a_b_c"反转过来(填空题)?
解:碰到如此问题,很多人想到的就是用算法,可是人家这是填空题啊,一条杠给你添耶,你怎么弄?还是一句话解决吧——不会!开个玩笑,真正的解决方案是:[].slice.call("a_b_c",0).reverse().join("")。 意思是,先用数组的方法将字符串转换为真数组,再将这个数组反转,反转之后拼接成字符串即可。


7、创建一个类,并且这个类拥有自己的私有、公有属性和方法。
解:懒得写代码了,JS怎么真正的让一个对象具有私有成员,方法只有一个——闭包 !


8、js的sort方法用的什么设计模式,sort底层用的是什么算法?
解:策略模式,冒泡排序(哥当时写的是交换排序,他直接给了一个叉,我表示很迷茫——冒泡排序、快速排序不是交换排序?) 


9、void(0)返回值是什么?
解:undefined(我擦,谁记这个?疯了?本身void这个关键字在js里面就被列为糟粕,详情请看《javascript语言精粹》)。


10、 typeof (null)结果是什么?
解:"object"(奇葩的题目,看你个人喜不喜欢没事玩console了,某些高人称之为“常识”)。


11、 js的四种基本数据类型?
解:严格意义上来说,js是弱类型,基本上任何玩意儿都能称为对象,非要说数据的类型,应该是:字符串,数值,布尔值,空值。(之所以这么认为,是因为js是在赋值的时候,自动说明其数据类型,也就是说,弱类型并不是指不分数据类型了。我们看到它们之间能直接做运算,实际上它们在运算的时候都会做自动类型转换)。

转载于:https://www.cnblogs.com/wuchu/p/3403635.html

### 常见前端开发面试与笔试题目解析 #### 1. 框架与工具考察 大厂通常会使用流行的前端框架和工具,例如 Vue、React 和 Angular,以及构建工具如 Webpack 和 Gulp。常见的问题包括对这些框架的核心概念的理解,以及如何使用构建工具进行项目打包和优化 [^1]。 例如: - **Vue**:解释 Vue 的双向数据绑定原理。 - **React**:描述 React 的虚拟 DOM 是如何工作的。 - **Webpack**:如何配置 Webpack 来处理 CSS 和图片资源? #### 2. 手写 Promise 手写一个简单的 Promise 实现是一个常见的笔试题目,用于考察候选人对异步编程的理解。例如,实现一个基本的 `Promise` 类,支持 `then` 方法,并能够处理链式调用。 ```javascript class MyPromise { constructor(executor) { this.state = 'pending'; this.value = undefined; this.reason = undefined; this.onFulfilledCallbacks = []; this.onRejectedCallbacks = []; const resolve = (value) => { if (this.state === 'pending') { this.state = 'fulfilled'; this.value = value; this.onFulfilledCallbacks.forEach(callback => callback()); } }; const reject = (reason) => { if (this.state === 'pending') { this.state = 'rejected'; this.reason = reason; this.onRejectedCallbacks.forEach(callback => callback()); } }; try { executor(resolve, reject); } catch (error) { reject(error); } } then(onFulfilled, onRejected) { return new MyPromise((resolve, reject) => { if (this.state === 'fulfilled') { setTimeout(() => { try { const result = onFulfilled(this.value); resolve(result); } catch (error) { reject(error); } }, 0); } if (this.state === 'rejected') { setTimeout(() => { try { const result = onRejected(this.reason); resolve(result); } catch (error) { reject(error); } }, 0); } if (this.state === 'pending') { this.onFulfilledCallbacks.push(() => { setTimeout(() => { try { const result = onFulfilled(this.value); resolve(result); } catch (error) { reject(error); } }, 0); }); this.onRejectedCallbacks.push(() => { setTimeout(() => { try { const result = onRejected(this.reason); resolve(result); } catch (error) { reject(error); } }, 0); }); } }); } } ``` #### 3. 单页面应用(SPA)的优缺点 单页面应用(SPA)因其良好的用户体验而受到欢迎,但也有一些缺点需要考虑 [^3]。 **优点**: 1. 用户体验好,速度快,内容改变无需刷新整个页面,对服务器压力较小。 2. 前后端分离式开发。 3. 页面效果比较炫酷。 **缺点**: 1. 不利于 SEO。 2. 导航不可用,需要自行实现前进和后退。 3. 初次加载消耗大,慢。 4. 页面相对复杂。 #### 4. WEB 标准与 W3C 理解 了解 WEB 标准和 W3C 规范是前端开发的基础,这有助于编写更规范和兼容性更好的代码 [^4]。 - **标签闭合**:确保所有 HTML 标签正确闭合。 - **标签小写**:使用小写的 HTML 标签。 - **结构行为表现的分离**:HTML 用于结构,CSS 用于样式,JavaScript 用于行为。 - **提高搜索机器人搜索几率**:通过语义化的 HTML 提高搜索引擎优化(SEO)。 #### 5. 微前端的优势 微前端是一种将多个独立的前端应用组合成一个整体的技术,它在大型项目中特别有用 [^2]。 - **优势**: - 团队可以独立开发、部署和维护各自的应用部分。 - 可以使用不同的技术栈。 - 易于扩展和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值