第一题 合并

 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的更多相关文章

  1. BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

    很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...

  2. 各大互联网公司2014前端笔试面试题–JavaScript篇

    很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...

  3. 前端开发面试题-JavaScript(转载)

    本文由 本文的原作者markyun 收集总结. 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol ...

  4. BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(昨天某个群友表示写的简单了点,然后我无情的把他的抄了一遍)

    (某个群友)http://www.cnblogs.com/coco1s/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大 ...

  5. 基础面试题——Javascript

    1.介绍js的基本数据类型 Undefined.Null.Boolean.Number.String 2.js有哪些内置对象? 数据封装类对象:Object.Array.Boolean.Number ...

  6. [WEB面试题] web前端面试题JavaScript第一弹,个人整理部分面试题汇总

    以下内容仅供参考,成年人不讲对错只讲利弊 1.什么是JavaScript原型链?如何理解 JavaScript中的每个对象都有一个prototype属性,我们称之为原型 原型的值是一个对象有自己的原型 ...

  7. 前端高频面试题 JavaScript篇

    以下问题都来自于互联网前端面经分享,回答为笔者通过查阅资料加上自身理解总结,不保证解答的准确性,有兴趣讨论的同学可以留言或者私信讨论. 1.JS的异步机制? 2.闭包如何实现? 3.原型链.继承? 4 ...

  8. 前端面试题-JavaScript

    引用GitHub 上 ltadpoles的前端面试 https://github.com/ltadpoles 目录  1. JavaScript 有哪些数据类型  2. 怎么判断不同的JS数据类型   ...

  9. 【前端】互联网公司2014前端笔试面试题JavaScript篇(待续)

    // 网上找的题目,自己做了下 /**************************** *1. 用js实现随机选取10–100之间的10个数字,存入一个数组,并排序 *************** ...

  10. 面试题-JavaScript交换两个变量的方法

    在平时的业务开发或者面试过程中,经常会遇到交换两个变量这种问题,于是,个人总结以下几种交换变量的方法: 1.方案一 使用一个临时变量来交换  2.方案二 使用ES6解构赋值语法来交换 3.方案三利用数 ...

随机推荐

  1. 图论&线性基(?)(8.12)

    边没有负权,最短路最多只有n条边 很暴力的思想: 先跑一遍最短路,找出最短路上的边,枚举每条边,翻倍,放进原图再跑一遍.取最大值 好熟悉啊 分层建图,建k层 每层内部是原图 若原图中u到v有连边,则由 ...

  2. 杂项-站点:SharePoint

    ylbtech-杂项-门户站点:SharePoint SharePoint Portal Server 2003 是一个门户站点,使得企业能够开发出智能的门户站点,这个站点能够无缝连接到用户.团队和知 ...

  3. 职位-CHO:CHO

    ylbtech-职位-CHO:CHO 首席人力资源官(Chief Human Resource Officer),简称CHO.是具有制定集团化经营的公司人力资源的战略规划,并监督执行,负责建立畅通的沟 ...

  4. javascript处理json字符串

    字符串转JSON格式 var obj = JSON.parse(json字符串); 判断字段值是否存在,返回true或false obj.hasOwnProperty("error" ...

  5. MongoDB--(NoSQL)入门介绍

    NoSQL中比较优秀的产品 windows 下载安装 shell 基本操作(javascript 引擎) BSON扩充的数据类型(JSON的扩展,浮点型,日期型的扩充) step1.创建数据库 use ...

  6. C#之委托(一)

    1,什么是委托 简单来说,就是代码在恰当的时间执行一段操作.代码不需要操作的细节.举个例子,遗嘱为例.一般来说遗嘱是在某人去世之前写好,然后把它放发到一个安全的地方,去世之后然后律师会执行遗嘱中的指令 ...

  7. PHP超时提示Fatal error: Maximum execution time of 30,解决方案

    PHP执行超时提示如下:Fatal error: Maximum execution time of 30 seconds exceeded in D:\php\AppServ\www\sum3\te ...

  8. 【Python】Visual Studio Code 安装&&使用 hello python~~~~

    1.安装Python 官网下载: https://www.python.org/downloads/   选择版本下载 2.下载完毕后,点击安装. 3.看到页面,直接下一步,全部默认选项. 4.安装即 ...

  9. 使用Webpack的代码分离实现Vue懒加载(译文)

    当一个Vue的项目体积变得十分庞大的时候,使用Webpack的代码分离功能将Vue Components,routes或Vuex的代码进行分离并按需加载,会极大的提高App的首屏加载速度. 在Vue的 ...

  10. 13、前端知识点--ajax原理以及实现过程

    一.简略版的 Ajax简介 Ajax(Asyncchronous JavaScript and Xml),翻译过来就是说:异步的javaScript和xml, Ajax不是新的编程语言,而是一种使用现 ...