2025年最新笔试题

news/2025/3/10 12:06:56/文章来源:https://www.cnblogs.com/xuqichun/p/18762345

zijie

1.  下列输出什么结果

undefined == false; // true
undefined === false; // false
[] == []; // false
[] === []; // false
{} == {}; // Uncaught SyntaxError: Unexpected token '=='
{} === {}; // Uncaught SyntaxError: Unexpected token '==='

2.  找到字符串中,第一个不重复字符,存在的话,返回这个字符的序号;如果不存在,则返回-1;

/*** 如:* s = leetcode  return 0;* s = love leetcode return 2; * s = aabb return -1; */
const str = 'leetcode';
// (.)捕获一个字符
// (?=.*\\1)是一个正向先行断言,表示在当前位置之后存在于捕获组\\1(即前面捕获的字符)相同的字符
// g 标志标识全局匹配,这样可以匹配字符串中所有重复的字符
let reg = new RegExp('(.)(?=.*\\1)', 'g');
// 从原始字符串中去除所有匹配到的重复字符串,得到了不重复的字符
const nonRepeatedChars = str.replace(reg, '');
console.log(nonRepeatedChars);
const firstChart = nonRepeatedChars.length > 0 ? nonRepeatedChars[0] : null;

3. 根据数据动态画出dom元素

const data = {tagName: 'ul',props: {'class': 'list'},children: [{tagName: 'li', children: ['douyin']},{tagName: 'li', children: ['toutiao']}]
};
<ul class="list"><li>douyin</li><li>toutiao</li>
</ul>
const createEl = (item, parentEl) => {        const node = document.createElement(item.tagName);if (item.props) {const cls = Object.keys(item.props)[0];node.setAttribute(cls, item.props[cls]);}const childrenList = item?.children;const isString = Array.isArray(childrenList) && childrenList.length > 0 &&typeof childrenList[0] === 'string';if (isString) {node.textContent = childrenList[0];}parentEl.appendChild(node);if (!isString) {childrenList.forEach(child => {createEl(child, node);});}
}
createEl(data, document.body);

4. 以下代码执行结果

第一道题

async function async1() {console.log("async1");await async2();console.log("async1 end");
}
async function async2() {console.log("async2");
}
console.log("script start");
setTimeout(() => {console.log("setTimeout");
},0)
async1();
new Promise(() => {console.log("promise1");
}).then(() => {console.log("promise2");
})
console.log("script end");输出结果:
script start
async1
async2
promise1
script endasync1 end
promise2
setTimeout

第二道题

console.log('script start');
var asyncFn = async() => {await new Promise((resolve) => {console.log("asyncFn");resolve();}).then(() => {console.log("asyncFn promise1");})console.log("asyncFn end");
};
asyncFn();
setTimeout(function() {console.log("setTimeout");
}, 0);
new Promise((resolve) => {console.log("Promise");resolve();
}).then(function(){console.log("promise1");
}).then(function() {console.log("promise2");
});
console.log("script end");输出结果:
script start
asyncFn
Promise
script endasyncFn promise1
promise1
asyncFn end
promise2
setTimeout

 

5. 给下列版本排序 

var versions = ["1.45.0", "1.5", "1.2.5", "3.3.3.3.3", "6"];
注意:1.45.0小于1.5

 

meituan

 1. 手动实现数组的 flat 方法(ES2019提供的方法)

Array.prototype.myFlat = function(depth = 1) {const result = [];for(const item of this) {if (Array.isArray(item) && depth > 0) {// 递归调用 myFlat 方法,深度减1result.push(...item.myFlat(depth -1));}else {result.push(item);}}return result;
}
const arr = [1,3,4,[5,6,[7,8]]];
console.log(arr.myFlat(2));

2. npm包版本比较,如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1,其他情况返回0

比如:1.2.3 vs 1.2;
   1.2.3 vs 3.4.1
const compareVersion = (version1,version2) => {const firstArr = version1.split('.');const sencondArr = version2.split('.');const length = Math.max(firstArr.length, sencondArr.length); // 取最大的长度for(let i = 0; i < length;i++) {const v1Part = i < firstArr.length ? firstArr[i] : 0;const v2Part = i < sencondArr.length ? sencondArr[i] : 0;if (v1Part > v2Part) {return 1;}else if (v1Part < v2Part) {return -1;}}return 0
}
const result = compareVersion('1.2.3','1.2');
console.log(result);

其他常见笔试题

1. 手写一个函数,模拟JS中的new操作符

function myNew(constructor,...args) {const obj = {};obj.__proto__ = constructor.prototype;const result = constructor.apply(obj, args);return typeof result === 'object' && result !== null ? result : obj;
}
function Person(name,age) {this.name = name;this.age = age;
}
Person.prototype.sayHello = function() {console.log(`hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
const person = myNew(Person, 'Alice', 30);
person.sayHello();

 

2. 实现一个函数,将驼峰命名法的字符串转换为下划线命名法

function camelToSnake(str) {const snakeStr = str.replace(/[A-Z]/g, (match) => {return '_' + match.toLowerCase();})return snakeStr.replace(/^_/, '');
}
const camelCase = 'HelloWorldJavaScript';
console.log(camelToSnake(camelCase));

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896760.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

No.44 ES6---Babel转码器(安装有点问题,用到再说)

一、Babel转码器Babel是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在老版本的浏览器执行。 这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。 1.浏览器支持性查看https://caniuse.com/2.Babel 官网https://babeljs.io/3.转码示例原始…

kubesphere中查看argocd登陆密码

获取argocd密码PASSWORDkubectl get secret argocd-initial-admin-secret -nargocd -o jsonpath="{.data.password}"|base64 -d 登陆: admin/PASSWORD

rockchip sdk使用make menuconfig无法删除选项文字(MobaXterm)

问题:在使用make menuconfig编辑内核配置时,按退格键删除不了相关选项,如下图所示:解决办法: 1. 在全局设置部分,把这里的退格键发送^H取消勾选:2. 在开启一个新会话时,进行同样的设置:

线控转向控制系统SbW

线控转向控制系统是一种将驾驶员对方向盘的操作信号转换为电信号,再传递给转向机,从而控制车轮完成相应的转向动作的技术。经纬恒润推出的线控转向控制系统SbW,分为路感模拟器与转向执行器,皆采用全冗余设计及主从控制方案,同时,按照ISO26262与DIN70065进行功能安全与降级…

uniapp使用scroll-view嵌套时不触发滚动事件

参考链接:微信文档:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html uniapp文档: https://uniapp.dcloud.net.cn/component/scroll-view.html布局代码:<scroll-view scroll-y class="scroll-box" bindscrolltolower="scro…

OpenCL 调用关系

学习 OpenCL,概念很多,理解不深,所以看示例代码时比较糊涂。 于是,把调用关系简单画了个图:希望能加深理解吧。

SAP SMW0 配置EXCEL 上载模板,供其他tcode 下载模板

本文演示如何在自定义的tcoe 中,可以点击下载保存好的默认excel模板: 1. 打开 SMWO: 筛选 直接点新增 点浏览,找你本机的 excel 模板,进行上载 上载完后, 回到上载程序,点击,就能弹出需要下载的excel模板了

OP51常见问题(自动安装座板)

座板放置歪斜 1.夹爪夹住座板后,上升-->翻转180-->横移-->下降放置。需要准确放入铆钉内。 2.因为座板和夹爪都是金属件,所以旋转和横移过程中可能会发生水平方向的偏移,导致放置时对孔失败。 如果放置失败座板浮起,对光检测到了,上方的大压块会下压一次,尝试将…

YASKAWA点焊机器人维修的流程

在现代工业生产中,工业机器人发挥着至关重要的作用,而YASKAWA点焊机器人更是其中的佼佼者。然而,就像任何设备一样,机器人也会遭遇故障,这时候安川机器人维修、YASKAWA机器人维修以及工业机器人维修就显得尤为关键。一、机器人故障的常见类型YASKAWA点焊机器人在长时间的工…

Camstar中ToggleContainer标题样式改成建模框一样的

😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着前进,开心的笑。(●◡●)

Unpivot Columns与Pivot Columns的连用

一、背景 需要进行数据清洗二、 数据准备 三、操作步骤 3.1 上传数据 +3.2 UnpivotOtherColumns3.3 AddColumn 3.4 RemoveColumns3.5 Pivot

pd将字符串默认为NaN

一、背景 有些字符串会被pandas都城NaN。但是有时不想这么操作。二、数据准备 三、代码展示import pandas as pddf1 = pd.read_excel(NaNTest.xlsx) df2 = pd.read_excel(NaNTest.xlsx, na_values=[], keep_default_na=False)df = pd.concat([df1, df2], axis=1) print(df) 四、…