【面试题】JavaScript
第一题 合并
const a = {
name: "zhangsan",
age: 22
} const b = {
name: "lisi",
age: 55
}
a,b对象,并且不改变a,b,把合并后的对象转为字符串打印到控制台
答案:
var c = {}
c.a = JSON.parse(JSON.stringify(a));
c.b = JSON.parse(JSON.stringify(b));
var string = "";
function fn(object) {
for (const key in object) {
if (object.hasOwnProperty(key)) {
const element = object[key];
if(typeof element == "object"){
fn(element);
}else {
string += "," + key + ":" + element
}
}
}
} fn(c);
console.log(string.slice(1))
第二题 把setTimeout(()=>{return 3+4;})封装在Promise中并获得其值
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(3 + 4);
})
}).then((data) => {
console.log(data)
})
第三题 随机生成一个长度为 10 的整数类型的数组,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20],将其排列成一个新数组,要求新数组形式如下,例如 [[2, 3, 4, 5], [10, 11], [20]]。
/**
* 一个产生10个长度随机整数数组的函数
*/
function getRandomInt() {
let arr = [];
for (let index = 0; index < 10; index++) {
arr.push(Math.round(Math.random() * 50));
}
return arr;
} let arr = getRandomInt();
/**
* 数组去重 排序
*/
arr = Array.from(new Set(arr)).sort((a, b) => {
return a - b;
}); /**
* 0-9一组
* 10-19一组 类推
*/
var result = [];
arr.forEach(function (val) {
let index = parseInt(val / 10);
if (!result[index]) {
result[index] = [];
}
result[index].push(val);
})
console.log(result);
第四题 反转链表,每 k 个节点反转一次,不足 k 就保持原有顺序
// 创建节点类
class Node {
constructor(data) {
this.data = data;
this.next = null
}
}
// 创建链表类
class LinkList {
constructor() {
this.head = null;
this.tail = null;
this.length = 0;
}
// 追加节点
append(data) {
// 创建节点
let newNode = new Node(data);
if (this.head === null) {
this.head = newNode;
this.tail = newNode;
} else {
this.tail.next = newNode;
this.tail = newNode;
}
this.length++;
}
}
// 创建链表
function createLinkList(...arr) {
let list = new LinkList()
arr.forEach((item) => {
list.append(item)
})
return list;
} // 翻转head到tail之间的部分,不包括head和tail
// 返回原链表的第一个元素,也就是翻转后的最后一个元素
function reverseList(head, tail) {
if (head === null || head.next === null) return head;
// 从要反转的第一个节点开始
let current = head.next,
first = head.next;
let pre = head; // 这里就是翻转不包括head的原因
while (current !== tail) {
// 这里就是翻转不包括tail的原因
// 反转相邻两个节点的顺序
const next = current.next;
current.next = pre;
// pre和current依次后移一位
pre = current;
current = next;
}
// 拼接
head.next = pre;
first.next = current; return first;
} function reverseKGroup(list, k) {
if (list.head === null || k === 1) {
return head;
} let cnt = 0;
const dummy = {
next: list.head
};
// 在目标链表前设置一个虚拟节点
let start = dummy;
let end = list.head;
while (end !== null) {
cnt++;
// 不足k的链表不反转
if (cnt % k !== 0) {
end = end.next;
} else {
start = reverseList(start, end.next);
end = start.next;
}
}
return dummy.next;
};
reverseKGroup(createLinkList(1,2,3,4,5,6,7,8,9,10,11),3)
【面试题】JavaScript的更多相关文章
- BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...
- 各大互联网公司2014前端笔试面试题–JavaScript篇
很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...
- 前端开发面试题-JavaScript(转载)
本文由 本文的原作者markyun 收集总结. 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol ...
- BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(昨天某个群友表示写的简单了点,然后我无情的把他的抄了一遍)
(某个群友)http://www.cnblogs.com/coco1s/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大 ...
- 基础面试题——Javascript
1.介绍js的基本数据类型 Undefined.Null.Boolean.Number.String 2.js有哪些内置对象? 数据封装类对象:Object.Array.Boolean.Number ...
- [WEB面试题] web前端面试题JavaScript第一弹,个人整理部分面试题汇总
以下内容仅供参考,成年人不讲对错只讲利弊 1.什么是JavaScript原型链?如何理解 JavaScript中的每个对象都有一个prototype属性,我们称之为原型 原型的值是一个对象有自己的原型 ...
- 前端高频面试题 JavaScript篇
以下问题都来自于互联网前端面经分享,回答为笔者通过查阅资料加上自身理解总结,不保证解答的准确性,有兴趣讨论的同学可以留言或者私信讨论. 1.JS的异步机制? 2.闭包如何实现? 3.原型链.继承? 4 ...
- 前端面试题-JavaScript
引用GitHub 上 ltadpoles的前端面试 https://github.com/ltadpoles 目录 1. JavaScript 有哪些数据类型 2. 怎么判断不同的JS数据类型 ...
- 【前端】互联网公司2014前端笔试面试题JavaScript篇(待续)
// 网上找的题目,自己做了下 /**************************** *1. 用js实现随机选取10–100之间的10个数字,存入一个数组,并排序 *************** ...
- 面试题-JavaScript交换两个变量的方法
在平时的业务开发或者面试过程中,经常会遇到交换两个变量这种问题,于是,个人总结以下几种交换变量的方法: 1.方案一 使用一个临时变量来交换 2.方案二 使用ES6解构赋值语法来交换 3.方案三利用数 ...
随机推荐
- The MEAN stack is a modern replacement for the LAMP (Linux, Apache, MySQL, PHP/Python) stack
w https://www.mongodb.com/blog/post/building-your-first-application-mongodb-creating-rest-api-using- ...
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第1节 基础加强_4_Junit_@Before&@After
为了演示输出一段话 测试add的方法 虽然报错了 但是打印的结果还是输出
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_2_字符输入流读取字符数据
读取的文件有中文也有英文 强转为char类型 缓冲读取多个字符 使用string的构造方法转换为字符输出
- vs2010自带的报表应用
1.先创建一个本地的数据库,右键单击你的项目-->选择[Add]--->New Item--->Local database.创建数据库后,添加一个数据表T_student,添加一些 ...
- hbase的TTL机制清除opentsdb的超时数据
我们发现用opentsdb向hbase写数据之后,磁盘占用率飙升得很快,我们存的业务数据只用保存一个月的即可,了解hbase的TTL机制可以清除相关表.相关行的超时数据,之前在数据备份时,我介绍了,o ...
- django配置mysql报错 no model named "MySQLdb"
官网上面连接mysql数据库的参数很少,入了不少坑,一直排错和检查参数都没有问题,只能manage.py mirgrate 更新数据库的信息创建数据库的表. 很是郁闷.报了一大堆的错误,大概意思就是说 ...
- API网关spring cloud gateway和负载均衡框架ribbon实战
通常我们如果有一个服务,会部署到多台服务器上,这些微服务如果都暴露给客户,是非常难以管理的,我们系统需要有一个唯一的出口,API网关是一个服务,是系统的唯一出口.API网关封装了系统内部的微服务,为客 ...
- Eclipse解除已关联的Coding远程仓库,重新关联github上的远程仓库
1.在Eclipse中的Git Repositories中找到要解除的仓库,依次找到Remote--origin[视自己的实际情况选择], 2.选中origin,右键选择Delete Remote , ...
- [Codeforces 1205B]Shortest Cycle(最小环)
[Codeforces 1205B]Shortest Cycle(最小环) 题面 给出n个正整数\(a_i\),若\(a_i \& a_j \neq 0\),则连边\((i,j)\)(注意i- ...
- P4643 [国家集训队]阿狸和桃子的游戏
传送门 这题看一眼就很不可做 考虑对于任意一个最终状态,对于一条边的贡献分成三种情况 如果此边连接的两点属于 $A$,那么对 $A$ 的贡献就是边权 $w$,即对答案的贡献为 $+w$ 如果两点都属于 ...