前端笔面编程收录【按公司】

目录

虚拟DOM【腾讯音乐笔试】

连字转驼峰【美团一面】

1.split('-')

2.toUpperCase()

3.slice(1)

用友sp

一面【二选一】

数组相邻和最大的对应两个元素

千位分割【无负数,含小数】

二面

华容道:BFS

k / 3, y = k % 3; //一维数组下标转化到二维数组中的坐标

swap(t[k],t[a*3+b]);

版本号排序:【滴滴提前批】

leetCode394字符串解码【地平线一面、金山笔试】

k[encoded_string]

A.正则表达式

B.递归

C.栈

消除相邻同字符【地平线一面】

龙湖一面

输入1返回0,输入0返回1

条件(三元)运算符

位运算(异或操作)

逻辑 NOT 运算符

减法

条件语句

数组映射

求和1-100的数组

等差数列

reduce

拓展:等比数列


虚拟DOM【腾讯音乐笔试】

class VNode {constructor(tagName, props, children) {this.tagName = tagName;this.props = props;this.children = children;}
}const h = (tagName, props, children) => new VNode(tagName, props, children);const ul = h('ul', { id: 'list', style: 'color:red' }, [h('li', { class: 'item' }, ['Item 1']),h('li', { class: 'item' }, ['Item 2']),h('li', { class: 'item' }, ['Item 3'])
]);// 渲染目标DOM
function render(node) {const element = document.createElement(node.tagName);element.id = node.props.id;element.style = node.props.style;for (let i = 0; i < node.children.length; i++) {const child = node.children[i];const childElement = render(child);element.appendChild(childElement);}return element;
}const ulDom = render(ul);
console.log(ulDom);

连字转驼峰【美团一面】

1.split('-')

2.toUpperCase()

3.slice(1)

function transformString(input) {const words = input.split('-'); // 使用连字符分割字符串let result = '';for (let i = 0; i < words.length; i++) {if (i === 0) {result += words[i]; // 第一个单词保持不变} else if (words[i]) {result += words[i][0].toUpperCase() + words[i].slice(1); // 非空单词首字母大写}}return result;
}// 示例用法
const inputString = '-font-size';
const transformedString = transformString(inputString);
console.log(transformedString); // 输出 'fontSize'

用友sp

一面【二选一】

数组相邻和最大的对应两个元素

千位分割【无负数,含小数】

function formatNumberWithCommas(number) {// 将数字转换为字符串const numStr = number.toString();// 判断是否为小数const isDecimal = numStr.includes('.');// 如果是小数,分割整数部分和小数部分let integerPart = numStr;let decimalPart = '';if (isDecimal) {[integerPart, decimalPart] = numStr.split('.');}// 使用贪心算法从右往左插入逗号let formattedInteger = '';let count = 0;for (let i = integerPart.length - 1; i >= 0; i--) {formattedInteger = integerPart[i] + formattedInteger;count++;if (count === 3 && i !== 0) {formattedInteger = ',' + formattedInteger;count = 0;}}// 如果有小数部分,添加回小数点和小数部分const formattedNumber = isDecimal? formattedInteger + '.' + decimalPart: formattedInteger;return formattedNumber;
}// 测试
const number1 = -1234567.89;
const number2 = 12345.67;
const number3 = 123456;
console.log(formatNumberWithCommas(number1)); // 输出 "-1,234,567.89"
console.log(formatNumberWithCommas(number2)); // 输出 "12,345.67"
console.log(formatNumberWithCommas(number3)); // 输出 "123,456"

二面

华容道:BFS

k / 3, y = k % 3; //一维数组下标转化到二维数组中的坐标

swap(t[k],t[a*3+b]);

distance 数组用于记录每个状态距离初始状态的步数。

在华容道问题中,每次移动一次,就相当于从一个状态转移到了另一个状态。

BFS的核心思想是从初始状态开始,逐步地将可能的状态加入队列,并记录每个状态距离初始状态经过的步数。

#include <iostream>
#include <algorithm>
#include <queue>
#include <unordered_map>using namespace std;int bfs(string start)
{string end = "12345678x";queue<string> q;unordered_map<string,int> d;q.push(start);d[start] = 0;int dx[] = {-1,0,1,0}, dy[] = {0,1,0,-1};//宽搜过程while(q.size()){auto t = q.front();q.pop();int distance = d[t];if(t == end) return distance;//状态转移//找到x的位置int k = t.find('x'); //返回x的下标int x = k / 3, y = k % 3; //一维数组下标转化到二维数组中的坐标//枚举上下左右四个方向for(int i = 0; i < 4; i ++ ){int a = x + dx[i], b = y + dy[i];if(a >= 0 && a < 3 && b >= 0 && b < 3){swap(t[k],t[a*3+b]);if(!d.count(t)) //当前更新的状态没有搜到过{d[t] = distance + 1; //更新当前距离q.push(t); //把新的状态加到队列中}swap(t[k],t[a*3+b]); //状态恢复}}}return -1;
}
int main()
{string start;for(int i = 0 ; i < 9; i ++ ){char c;cin >> c;start += c;}cout << bfs(start) << endl;return 0;
}

版本号排序:【滴滴提前批】

// 假设有一个版本号数组
const versionNumbers = ["1.0.2", "1.1.0", "2.0.0", "1.0.1"];// 定义一个比较函数来进行版本号排序
function compareVersions(versionA, versionB) {const partsA = versionA.split('.').map(Number);const partsB = versionB.split('.').map(Number);for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {const partA = partsA[i] || 0;const partB = partsB[i] || 0;if (partA < partB) return -1;if (partA > partB) return 1;}return 0;
}// 使用比较函数对版本号数组进行排序
const sortedVersions = versionNumbers.sort(compareVersions);// 打印排序后的版本号数组
console.log(sortedVersions);

leetCode394字符串解码【地平线一面、金山笔试】

k[encoded_string]

表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数

示例1:

输入:s = "3[a]2[bc]"

输出:"aaabcbc"

示例2:

输入:s = "3[a2[c]]"

输出:"accaccacc"

输入:s = "2[abc]3[cd]ef"

输出:"abcabccdcdcdef"

A.正则表达式

var decodeString = function(s) {const regex = /\d+\[[a-zA-Z]+\]/g; // Match patterns like cnt[str]while (s.match(regex)) {s = s.replace(regex, (match) => {const cnt = parseInt(match.match(/\d+/)[0]); const subStr = match.match(/[a-zA-Z]+/)[0];    return subStr.repeat(cnt);  // Repeat str cnt times});}return s;
};

B.递归

function flattenString(str) {let result = '';for (let i = 0; i < str.length; i++) {if (str[i] >= '0' && str[i] <= '9') { // 如果当前字符是数字let j = i;while (j < str.length && str[j] >= '0' && str[j] <= '9') j++; // 找到所有的数字字符let num = parseInt(str.substring(i, j)); // 转化为数字let count = 1; // 用于找到与当前左括号匹配的右括号let k = j + 1;while (k < str.length) {if (str[k] === '[') count++;else if (str[k] === ']') count--;if (count === 0) break;k++;}let innerStr = flattenString(str.substring(j + 1, k)); // 递归地处理方括号内的字符串while (num-- > 0) result += innerStr;i = k; // 移动索引位置} else if (str[i] !== '[' && str[i] !== ']') { // 忽略方括号result += str[i];}}return result;
}

C.栈

/*** @param {string} s* @return {string}*/
var decodeString = function(s) {let subStr = '';const stack = [];for (const char of s) {if (char === ']') {let cur = stack.pop();// Build the subStr within the bracketswhile (cur !== '[') {subStr = cur + subStr;cur = stack.pop();}let num = '';cur = stack.pop();// Extract the repetition countwhile (!isNaN(cur)) {num = cur + num;cur = stack.pop();}// Put back any non-numeric charactersif (cur !== undefined) {stack.push(cur);}// Repeat subStr and push it back onto the stackstack.push(subStr.repeat(parseInt(num, 10)));subStr = '';} else {stack.push(char);}}return stack.join('');
};

消除相邻同字符【地平线一面】

function eliminateAdjacentDuplicates(input) {const result = [];for (let i = 0; i < input.length; i++) {if (i === 0 || input[i] !== input[i - 1]) {result.push(input[i]);}}return result.join('');
}const inputString = 'abccbbb';
const resultString = eliminateAdjacentDuplicates(inputString);
console.log(resultString); // 输出 'abcb'

龙湖一面

输入1返回0,输入0返回1

条件(三元)运算符

位运算(异或操作)

逻辑 NOT 运算符

减法

条件语句

数组映射

求和1-100的数组

等差数列

reduce

const array = Array.from({ length: 100 }, (_, i) => i + 1); // 创建包含1到100的数组const sum = array.reduce((accumulator, currentValue) => accumulator + currentValue, 0);console.log(sum); // 输出5050

拓展:等比数列

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

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

相关文章

金蝶云星空与旺店通·企业奇门对接集成盘盈单查询打通创建盘点单

金蝶云星空与旺店通企业奇门对接集成盘盈单查询打通创建盘点单 来源系统:金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践&#xff0c;面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司&#xff0c;提供一个通用的ERP服务平台。K/3C…

组合拳SSRF+redis未授权访问

目录 一、SSRF 二、redis未授权访问 三、组合利用 1.写入Webshell 2.反弹shell 一、SSRF 一台web服务器对其他服务器发起请求&#xff0c;以加载其他服务器的web内容或数据 但因请求参数没有进行严格过滤&#xff0c;攻击者可能会通过SSRF漏洞来访问敏感数据、执行未经授…

springcloud3 分布式事务-产生原因的模拟1

一 分布式事务 1.1 分布式事务产生条件 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下&#xff0c;产生的事务&#xff0c;例如&#xff1a; 1.跨数据源的分布式事务 2.跨服务的分布式事务 3.综合情况 二 案例操作 2.1 原理架构 订单的创建、库存的扣…

Spring常见面试题总结

什么是Spring Spring是一个轻量级Java开发框架&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题&#xff0c;以提高开发效率。它是一个分层的JavaSE/JavaEE full-stack&#xff08;一站式&#xff09;轻量级开源框架&#xff0c;为开发Java应用程序…

vue+express、gitee pm2部署轻量服务器

一、代码配置 前后端接口都保持 127.0.0.1:3000 vue创建文件 pm2.config.cjs module.exports {apps: [{name: xin-web, // 应用程序的名称script: npm, // 启动脚本args: run dev, // 启动脚本的参数cwd: /home/vue/xin_web, // Vite 项目的根目录interpreter: none, // 告诉…

RabbitMQ - 如保证消息的可靠性?

目录 一、消息可靠性 1.1、生产者消息确认&#xff08;生产者角度&#xff09; 1.1.1、理论 1.1.2、实践 1.2、消息持久化&#xff08;消息角度&#xff09; 1.2.1、理论 1.3、消费者消息确认&#xff08;消费者角度&#xff09; 1.3.1、理论 1.3.2、实践 1.4、失败重…

Matlab图像处理-Lab模型

Lab模型 Lab模型是由CIE&#xff08;国际照明委员会&#xff09;制定的一种彩色模型。该模型与设备无关&#xff0c;弥补了RGB模型和CMYK模型必须依赖于设备颜色特性的不足&#xff1b; 另外&#xff0c;自然界中的任何颜色都可以在Lab空间中表现出来&#xff0c;也就是说RGB和…

20230917后台面经总结

1.ping底层原理 Ping 是 ICMP 的一个重要应用&#xff0c;主要用来测试两台主机之间的连通性。Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文&#xff0c;目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。 基…

Unity之手游UI的点击和方向移动

一 Button的点击 1.1 新建UI -> Button 1.2 在Button上面右击添加空物体 1.3 创建脚本挂载到空物体上面 脚本内容添加点击方法&#xff0c;来控制物体的显示隐藏 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using Unit…

Nginx 文件解析漏洞复现

一、漏洞说明 Nginx文件解析漏洞算是一个比较经典的漏洞&#xff0c;接下来我们就通过如下步骤进行漏洞复现&#xff0c;以及进行漏洞的修复。 版本条件&#xff1a;IIS 7.0/IIS 7.5/ Nginx <8.03 二、搭建环境 cd /vulhub/nginx/nginx_parsing_vulnerability docker-compos…

【C++基于多设计模式下的同步异步日志系统】

文章目录 [toc] 1 :peach:项目介绍:peach:2 :peach:开发环境:peach:3 :peach:核心技术:peach:4 :peach:环境搭建:peach:5 :peach:日志系统介绍:peach:5.1 :apple:为什么需要日志系统&#xff1f;:apple:5.2 :apple:日志系统技术实现:apple:5.2.1 :lemon:同步写日志:lemon:5.2.2…

【excel密码】excel文件加密的三种方式

想要给Excel文件进行加密&#xff0c;方法有很多&#xff0c;今天分享三种Excel加密方法给大家。 一、打开密码 设置了打开密码的excel文件&#xff0c;打开文件就会提示输入密码才能打开excel文件&#xff0c;只有输入了正确的密码才能打开并且编辑文件&#xff0c;如果密码…

Unity实现简易太阳系

开发环境&#xff1a;Unity 2022.3.5f1c1 Visual Studio 2022 太阳系相关星体&#xff1a;太阳、八大行星、月球 模拟星系&#xff1a;太阳系、地月系 功能&#xff1a;支持行星以太阳为中心&#xff0c;任意轴进行公转&#xff0c;此处演示同一平面。 a1-a8为公转轴&#xff…

《ADS2011射频电路设计与仿真实例》功率放大器设计的输入输出匹配

徐兴福这本书的6.6 Smith圆图匹配这一节中具体匹配时&#xff0c;直接给出了电容与串联微带的值&#xff0c;没有给出推导过程&#xff0c;我一开始以为是省略了详细推导过程&#xff0c;后来发现好像基本上是可以随便自己设的。以输入匹配&#xff08;书本6.6.4输入匹配电路的…

景联文科技:数据供应商在新一轮AI热潮中的重要性

景联文科技是AI基础行业的头部数据供应商&#xff0c;可协助人工智能企业解决整个人工智能链条中数据标注环节的相对应问题。 随着全球新一轮AI热潮来袭&#xff0c;大量训练数据已成为推动AI算法模型进步和演化的不可或缺的重要因素。数据的质量和数量直接影响了模型训练和性能…

现在全国融资融券两融利率最低是多少?哪家证券公司券商费率低?

融资融券是指投资者通过向券商借入资金&#xff08;融资&#xff09;或借入证券&#xff08;融券&#xff09;&#xff0c;以达到获得更高收益、降低交易风险、提高资金利用效率的目的。通过融资&#xff0c;投资者可以用借入的资金买入更多的证券&#xff1b;通过融券&#xf…

多目标优化算法:基于非支配排序的海象优化算法(NSWOA)MATLAB

一、海象优化算法WOA 海象优化算法&#xff08;Walrus Optimization Algorithm&#xff0c;WOA&#xff09;由Trojovsk等人于2023年提出&#xff0c;该算法模拟海象的进食&#xff0c;迁移&#xff0c;逃跑和对抗捕食者的过程&#xff0c;WOA包含探索、迁移和开发三个阶段&…

cms之帝国cms安装

内容摘要 帝国网站管理系统&#xff0c;英文名称为EmpireCMS&#xff0c;简称“帝国CMS”&#xff0c;本文将介绍帝国网站管理系统的安装方法。 前言&#xff1a; 本文安装教程是以帝国CMS7.5版本为基础进行图文讲解。 各位看官&#xff0c;一定要按照每个步骤去执行&#xf…

【Django入门】第一个Django项目

Django&#xff0c;广为人知的Python Web框架&#xff0c;以其强大而又灵活的特点脱颖而出。其宣传口号是&#xff1a;“为完美主义者开发的框架”。这篇文章将为你揭示创建第一个Django项目的魔法以及Django项目的基本结构。 为什么选择Django&#xff1f; 在深入学习前&…

基于SSM的博客系统开发

文章目录 前言1.技术选型&#xff1a;2.主要功能&#xff1a;3.项目展示&#xff1a;前台页面&#xff1a;后台页面&#xff1a; 总结 前言 提示&#xff1a;人类与强权的斗争&#xff0c;就是记忆与遗忘的斗争。 --米兰昆德拉《笑忘录》 1.技术选型&#xff1a; 开发工具&am…