第一题 合并

 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. C# WPF 4.5 RibbonWindow

    WPF  RibbonWindow , Z .Net4.5里有自带的RibbonWindow,需要引用 System.Windows.Controls.Ribbon.dll 题外话:自带的Ribbon ...

  2. MySQL-default设置

    Both statements insert a value into the phone column, but the first inserts a NULL value and the sec ...

  3. python-笔记(二)数据类型

    一.数据类型是什么鬼? 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...

  4. mysql_存储引擎层-innodb buffer pool

    buffer pool 是innodb存储引擎带的一个缓存池,查询数据时,首先从内存中查询 数据如果内存中存在的话直接返回. innodb buffer pool 和 qcache 的区别:Qcach ...

  5. Powershell 音乐播放

    目录 目录 前言 systemwindowsmediamediaplayer 前言 Powershell抱着.NET的大腿,与生俱来了许多非常便捷的功能.例如--音乐的自动播放 system.wind ...

  6. python3爬虫之urllib初探

    urllib主要包含request(请求模块).error(异常处理模块).parse(工具模块).robotparser(识别网站的robots.txt文件,是否允许爬取). request(请求模 ...

  7. python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域

    上节课总结 1 运算符 in 字符串 判断  : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...

  8. linux自动化运维工具Ansible saltstack Puppet、Chef、Fabric之间的对比

    发现分布式是一个发展的趋势,无论是大型网站的负载均衡架构还是大数据框架部署,以及云存储计算系统搭建都离不开多台服务器的连续部署和环境搭建. 当我们的基础架构是分散式或者基于云的,并且我们经常需要处理在 ...

  9. [Python3] 006 列表的常用方法

    目录 一个篱笆三个桩,list 有--好多个桩 1. 列表的小伙伴们 (1) 召唤小伙伴 (2) 我给"他们"分了个组 2. 小伙伴们的"才艺展示" (1) & ...

  10. 【转载】研发应该懂的binlog知识(下)

    引言 这篇是<研发应该懂的binlog知识(上)>的下半部分.在本文,我会阐述一下binlog的结构,以及如何使用java来解析binlog.不过,话说回来,其实严格意义上来说,研发应该还 ...