第1题(2019-07-22):以下代码输出什么?
function fn(a) {
console.log(a);
var a = 2;
function a() {}
console.log(a);
}
fn(1);
讨论及参考答案:第1题
第2题(2019-07-23):a在什么情况下,控制台会输出hello world(答案不唯一)
var a = ?;
if(a == 1 && a == 2 && a == 3){
console.log('Hello world!');
}
讨论及参考答案:第2题
第3题(2019-07-24):请使用原型链相关知识实现b继承n=1;c继承n=2;m=3
讨论及参考答案:第3题
第4题(2019-07-25):以下代码输出什么?
var a = 1 < 2 < 1 < 1 ? 3 : 4;
var b = 3 < 2 < 1 < 1 ? 2 : 1;
console.log(a);
console.log(b);
讨论及参考答案:第4题
第5题(2019-07-26):已知以下数组:
var arr = [ [11, 22, 22], [13, 14, 15, 15], [16, 17, 18, 19, [11, 12, [12, 13, [14] ] ] ], 12];
编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序并且不重复的数组
讨论及参考答案:第5题
第6题(2019-07-29):实现一个函数add,满足下列输出结果
add(1); // 1
add(1)(2); // 3
add(1)(2)(3); // 6
add(1)(2,3); // 6
add(1,2)(3); // 6
add(1,2,3); // 6
讨论及参考答案:第6题
第7题(2019-07-30):以下代码会输出什么?
['1', '2', '3'].map(parseInt) what & why ?
讨论及参考答案:第7题
第8题(2019-07-31):请写出以下代码的输出结果:
var name = 'Tom';
(function() {
if (typeof name == 'undefined') {
name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
讨论及参考答案:第8题
第9题(2019-08-01):请写出以下代码的输出结果:
var name = 'Tom';
(function() {
if (typeof name == 'undefined') {
var name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
讨论及参考答案:第9题
第10题(2019-08-02):输出以下代码运行结果
1 + "1"
2 * "2"
[1, 2] + [2, 1]
"a" + + "b"
讨论及参考答案:第10题
第11题(2019-08-05):编程题,找出字符串中连续出现最多的字符和个数(蘑菇街)
'abcaakjbb' => {'a':2,'b':2}
'abbkejsbcccwqaa' => {'c':3}
讨论及参考答案:第11题
第12题(2019-08-06):编程题,根据以下要求,写一个数组去重函数(蘑菇街)
1.如传入的数组元素为[123, "meili", "123", "mogu", 123],则输出:[123, "meili", "123", "mogu"]
2.如传入的数组元素为[123, [1, 2, 3], [1, "2", 3], [1, 2, 3], "meili"],则输出:[123, [1, 2, 3], [1, "2", 3], "meili"]
3.如传入的数组元素为[123, {a: 1}, {a: {b: 1}}, {a: "1"}, {a: {b: 1}}, "meili"],则输出:[123, {a: 1}, {a: {b: 1}}, {a: "1"}, "meili"]
讨论及参考答案:第12题
第 13题(2019-08-07):为什么for循环嵌套顺序会影响性能?
var t1 = new Date().getTime()
for (let i = 0; i < 100; i++) {
for (let j = 0; j < 1000; j++) {
for (let k = 0; k < 10000; k++) {
}
}
}
var t2 = new Date().getTime()
console.log('first time', t2 - t1)
for (let i = 0; i < 10000; i++) {
for (let j = 0; j < 1000; j++) {
for (let k = 0; k < 100; k++) {
}
}
}
var t3 = new Date().getTime()
console.log('two time', t3 - t2)
讨论及参考答案:第13题
第 14题(2019-08-08):统计 1 ~ n 整数中出现 1 的次数。
讨论及参考答案:第14题
第 15 题(2019-08-09):修改以下 print 函数,使之输出 0 到 99,或者 99 到 0
要求:
1、只能修改 setTimeout 到 Math.floor(Math.random() * 1000 的代码
2、不能修改 Math.floor(Math.random() * 1000
3、不能使用全局变量
function print(n){
setTimeout(() => {
console.log(n);
}, Math.floor(Math.random() * 1000));
}
for(var i = 0; i < 100; i++){
print(i);
}
讨论及参考答案:第15题
第 16题(2019-08-12):模拟 localStorage 时如何实现过期时间功能
讨论及参考答案:第16题
第 17题(2019-08-13):给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log(m+n))。
讨论及参考答案:第17题
第 18题(2019-08-14):实现一个 sleep 函数,比如 sleep(1000) 意味着等待1000毫秒,可从 Promise、Generator、Async/Await 等角度实现
讨论及参考答案:第18题
第 19题(2019-08-15):请求时浏览器缓存 from memory cache 和 from disk cache 的依据是什么,哪些数据什么时候存放在 Memory Cache 和 Disk Cache中?
讨论及参考答案:第19题
第 20题(2019-08-16):下面代码中 a 在什么情况下会打印 1?
讨论及参考答案:第20题
第 21 题(2019-08-19):vue 是如何对数组方法进行变异的?例如 push、pop、splice 等方法
讨论及参考答案:第21题
第 22题(2019-08-20)::ES5/ES6 的继承除了写法以外还有什么区别?
讨论及参考答案:第22题
第 23题(2019-08-21):介绍下观察者模式和订阅-发布模式的区别,各自适用于什么场景
讨论及参考答案:第23题
第 24题(2019-08-22):介绍下重绘和回流(Repaint & Reflow),以及如何进行优化
讨论及参考答案:第24题
第 25题(2019-08-23):有以下 3 个判断数组的方法,Object.prototype.toString.call() 、 instanceof 以及 Array.isArray(),请分别介绍它们之间的区别和优劣
讨论及参考答案:第25题
第 26题(2019-08-26):输出以下代码执行结果
function wait() {
return new Promise(resolve =>
setTimeout(resolve, 10 * 1000)
)
}
async function main() {
console.time();
const x = wait();
const y = wait();
const z = wait();
await x;
await y;
await z;
console.timeEnd();
}
main();
讨论及参考答案:第26题
第27题(2019-08-27):怎么限制接口调用次数?
讨论及参考答案:第27题
第28题(2019-08-28):用函数实现扑克牌排序
讨论及参考答案:第28题
第29题(2019-08-29):什么是防抖和节流?有什么区别?如何实现?
讨论及参考答案:第29题
第30题(2019-08-30):如何将 [{id: 1}, {id: 2, pId: 1}, ...] 的重复数组(有重复数据)转成树形结构的数组 [{id: 1, child: [{id: 2, pId: 1}]}, ...] (需要去重)
讨论及参考答案:第30题
第31题(2019-09-02):介绍下 Set、Map、WeakSet 和 WeakMap 的区别?
讨论及参考答案:第31题
第32题(2019-09-03):考察作用域的一道代码题
讨论及参考答案:第32题
第33题(2019-09-04):谈谈你对 TCP 三次握手和四次挥手的理解
讨论及参考答案:第33题
第34题(2019-09-05):请把俩个数组 [A1, A2, B1, B2, C1, C2, D1, D2] 和 [A, B, C, D],合并为 [A1, A2, A, B1, B2, B, C1, C2, C, D1, D2, D]
讨论及参考答案:第34题
第35题(2019-09-06):使用迭代的方式实现 flatten 函数
讨论及参考答案:第35题
第36题(2019-09-09):改造下面的代码,使之输出0 - 9,写出你能想到的所有解法
讨论及参考答案:第36题
第37题(2019-09-10):写一个单向链数据结构的 js 实现并标注复杂度
讨论及参考答案:第37题
第38题(2019-09-11):算法题
讨论及参考答案:第38题
第39题(2019-09-12):反转链表,每 k 个节点反转一次,不足 k 就保持原有顺序
讨论及参考答案:第39题
第40题(2019-09-16):如何实现骨架屏,说说你的思路
讨论及参考答案:第40题
第41题(2019-09-17):vue 如何优化首页的加载速度?vue 首页白屏是什么问题引起的?如何解决呢?
讨论与参考答案:第41题
第42题(2019-09-18):Http 状态码 301 和 302 的应用场景分别是什么?
讨论与参考答案:第42题
第43题(2019-09-19):怎么提高webpack打包速度?谈谈你的思路和方案
讨论与参考答案:第43题
第44题(2019-09-20):介绍下 http1.0、1.1、2.0 协议的区别?
讨论与参考答案:第44题
第45题(2019-09-23):列举三种禁止浏览器缓存的头字段,并写出响应的设置值
讨论与参考答案:第45题
第46题(2019-09-24):精确获取页面元素位置的方式有哪些?
讨论与参考答案:第46题
第47题(2019-09-25):正则从2018-10-07T11:48:47 Asia/zh-cn 提取出来结果[2018,10,07,11,48,47]
讨论与参考答案:第47题
第48题(2019-09-26):如何判断object是数组类型?
讨论与参考答案:第48题
第49题(2019-09-27):【编程题】已知数据结构users,请实现语法支持user.unique能够按照name字段去重,并输出结构为:["a","b"]
var users=[{
id:1,name:"a"
},{
id:2,name:"a"
},{
id:3,name:"b"
},{
id:4,name:"v"
}]
Array.prototype.unique = function () {
var res;
this.map(item => {
this[item.id - 1] = item.name
})
// ES6里新添加了两个很好用的东西,set和Array.from
// set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目。
res=new Set(this);
console.log("new Set对象",res)
// 但是这里大家可以看到,set返回的是一个对象,但是我们想要的是数组啊。
// 这回,就该轮到Array.from出场了,它的作用,就是可以把类数组对象、可迭代对象转化为数组。
res=Array.from(new Set(this));
return res//es6 数组去重
}
console.log(users.unique());
讨论与参考答案:第49题
第50题(2019-09-29):已知如下对象,请基于es6的proxy方法设计一个属性拦截读取操作的例子,要求实现去访问目标对象example中不存在的属性时,抛出错误:Property "$(property)" does not exist
const man={
name:'jscoder',
age:22
}
//补全代码
const proxy = new Proxy(...)
proxy.name //"jscoder"
proxy.age //22
proxy.location //Property "$(property)" does not exist
讨论与参考答案:第50题
第51题(2019-09-30):给出如下虚拟dom的数据结构,如何实现简单的虚拟dom,渲染到目标dom树
//样例数据
let demoNode = ({
tagName: 'ul',
props: {'class': 'list'},
children: [
({tagName: 'li', children: ['douyin']}),
({tagName: 'li', children: ['toutiao']})
]
});
//构建一个render函数,将demoNode对象渲染为以下dom
<ul class="list">
<li>douyin</li>
<li>toutiao</li>
</ul>
讨论与参考答案:第51题
第52题(2019-10-08):谈谈你对事件委托代理的理解及它们的使用场景
讨论与参考答案:第52题
第53题(2019-10-09):谈谈你对闭包的理解、优缺点及使用场景
讨论与参考答案:第53题
第54题(2019-10-10):实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制
讨论与参考答案:第54题
第55题(2019-10-11):在Javascript中什么是伪数组?如何将伪数组转化为标准数组?
讨论与参考答案:第55题
第56题(2019-10-12):对作用域上下文和this的理解,看下列代码:
var User = {
count: 1,
getCount: function() {
return this.count;
}
};
console.log(User.getCount()); // what?
var func = User.getCount;
console.log(func()); // what?
问两处console输出什么?为什么?
讨论与参考答案:第56题
第57题(2019-10-14):编写一个 JavaScript 函数,输入指定类型的选择器 ( 仅需支持 id , class ,tagName 三种简单 CSS 选择器,无需兼容组合选择器 ) 可以返回匹配的 DOM 节点,需考虑浏览器兼容性和性能。
讨论与参考答案:第57题
第58题(2019-10-15):定义一个log方法,让它可以代理console.log的方法
讨论与参考答案:第58题
第59题(2019-10-16):为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将<, >, &, “进行转义
讨论与参考答案:第59题
第60题(2019-10-17):Vue 中的 computed 是如何实现的
讨论与参考答案:第60题
第61题(2019-10-18):谈一谈 nextTick 的原理
讨论与参考答案:第61题
第62题(2019-10-21):为什么 HTTP1.1 不能实现多路复用(腾讯)
讨论与参考答案:第62题
第63题(2019-10-22):求多个数组之间的交集(算法题)
讨论与参考答案:第63题
第64题(2019-10-23):将'10000000000'形式的字符串,以每3位进行分隔展示'10.000.000.000',多种实现方式 (百度)
讨论与参考答案:第64题
第65题(2019-10-24):node中进程和线程区别是什么?说的越详细越深入越好!
讨论与参考答案:第65题
第66题(2019-10-25):请介绍一下Node事件循环的流程
讨论与参考答案:第66题
第67题(2019-10-26):V8的内存分代和回收算法请简单讲一讲
讨论与参考答案:第67题
第68题(2019-10-28):请谈一下内存泄漏是什么,以及常见内存泄漏的原因,和排查的方法
讨论与参考答案:第68题
第69题(2019-10-29):https身份验证过程中会涉及到密钥, 对称加密,非对称加密,摘要的概念,请解释一下
讨论与参考答案:第69题
第70题(2019-10-30):请简述一下node的多进程架构
讨论与参考答案:第70题
第71题(2019-10-31):如果使用过koa、egg这两个Node框架,请简述其中的中间件原理,最好用代码表示一下
讨论与参考答案:第71题
第72题(2019-11-01):请问创建子进程的方法有哪些,简单说一下它们的区别
讨论与参考答案:第72题
第73题(2019-11-04):Vue 中的 computed 和 watch 的区别在哪里(虾皮)
讨论与参考答案:第73题
第74题(2019-11-05):深拷贝和浅拷贝的实现方式分别有哪些?(常问经典题)-携程
讨论与参考答案:第74题
第75题(2019-11-06):webpack 中 loader 和 plugin 的区别是什么(平安)
讨论与参考答案:第75题
第76题(2019-11-07):手动实现一个bind方法(喜马拉雅)
讨论与参考答案:第76题
第77题(2019-11-08):手动封装一个请求函数,可以设置最大请求次数,请求成功则不再请求,请求失败则继续请求直到超过最大次数(流利说)
讨论与参考答案:第77题
第78题(2019-11-10):说下浏览器的缓存机制(流利说)
讨论与参考答案:第78题
第79题(2019-11-11): forEach,map和filter的区别(哔哩哔哩)
讨论与参考答案:第79题
第80题(2019-11-12): 跨标签页的通讯方式有哪些(哔哩哔哩)
讨论与参考答案:第80题
第81题(2019-11-13): 实现一个函数判断数据类型(哔哩哔哩)
讨论与参考答案:第81题
第82题(2019-11-14): 什么是 IIFE (立即调用的函数表达式)
讨论与参考答案:第82题
第83题(2019-11-15): .call 和 .apply 区别是啥?
讨论与参考答案:第83题
第84题(2019-11-18): 如何在 JS 中“深冻结”对象
讨论与参考答案:第84题
第85题(2019-11-19): 什么是SSR,怎么看待使用SSR(服务端渲染)的?
讨论与参考答案:第85题
第86题(2019-11-20): CDN的工作过程及实现原理是什么?
讨论与参考答案:第86题
第87题(2019-11-21): 常见的web安全攻击及防护原理
讨论与参考答案:第87题
第88题(2019-11-22): 服务端渲染SSR框架 Next.js的原理是什么及它的优缺点?
讨论与参考答案:第88题
第89题(2019-11-25): 使用 ECMAScript(JS)代码实现一个事件类Event,包含下面功能:绑定事件、解绑事件和派发事件
讨论与参考答案:第89题
第90题(2019-11-26): 如何抓取数据?如何使用工具来配置代理?
讨论与参考答案:第90题
第91题(2019-11-27): 你所了解的webpack的构建流程与打包原理?
讨论与参考答案:第91题
第92题(2019-11-28):项目中遇到比较难解决的问题bug最后是通过什么途径去解决的了?
讨论与参考答案:第92题
第93题(2019-11-29):ES6 class 和普通构造函数的区别?
讨论与参考答案:第93题
第94题(2019-12-02):vue从data改变到页面渲染的过程?(腾讯)
讨论与参考答案:第94题
第95题(2019-12-03):谈谈你对Virtual DOM 的内部工作原理的理解?(腾讯)
讨论与参考答案:第95题
第96题(2019-12-04):谈谈Websocket的原理及使用场景?(腾讯)
讨论与参考答案:第96题
第97题(2019-12-05):跨平台框架weex和rn及Flutter的原理是什么(腾讯) ?
讨论与参考答案:第97题
第98题(2019-12-06):有读过Vuex的源码吗?如果要你自己设计一个状态管理库你会怎么去设计?(腾讯)
讨论与参考答案:第98题
第99题(2019-12-09):webAssebly1.0成为W3C标准,你对它了解多少?
讨论与参考答案:第99题
第100题(2019-12-10):谈谈你对OAuth2.0 原理流程的理解及运用?
讨论与参考答案:第100题
第101题(2019-12-11):组件设计的原则是什么,有开发过npm库发布到npm市场吗?
讨论与参考答案:第101题
第102题(2019-12-12):了解过PWA吗?它的离线缓存原理是什么?
讨论与参考答案:第102题
第103题(2019-12-13):谈谈你对MVC、MVP、MVVM这三种架构模式的理解及它们的区别?
讨论与参考答案:第103题
第104题(2019-12-14):说一下你的优缺点、还能提高的地方及未来职业规划?
讨论与参考答案:第104题
第105题(2019-12-16):有了解过微前端的概念吗?如果要你去设计实施微前端你会怎么做?
讨论与参考答案:第105题
第106题(2019-12-17):babel转换es6语法工作原理是什么?
讨论与参考答案:第106题
第107题(2019-12-18):一个TCP 连接可以发多少个 HTTP 请求?
讨论与参考答案:第107题
第108题(2019-12-19):输入npm install 之后执行了什么操作?
讨论与参考答案:第108题
第109题(2019-12-20):面试官:你使用过哪些前端异常处理方式?
讨论与参考答案:第109题
第110题(2019-12-21):聊聊前端模块化方案及import、require、export、module.exports 的区别?
讨论与参考答案:第110题
第111题(2019-12-23):写出一个数组展开函数, 如输入:[1,[2,[3,4,2],2],5,[6]], 则输出:[1,2,3,4,2,2,5,6]
讨论与参考答案:第111题
第112题(2019-12-24):请使用canvas画一个五角星。
讨论与参考答案:第112题
推荐全栈程序员必备微信号
深圳湾码农
微信号:ydhlwnxs
推荐理由:
在多学一点知识,就可以少写一行代码!专注于技术资源分享,经验交流,最新技术解读,另有海量免费电子书以及成套学习资源,关注深圳湾码农,做技术的先驱者。
▼长按下方↓↓↓二维码识别关注
前端每日一题,从基础到进阶,从原理到实战,带你走入高级前端之路!每天早上9点左右更新题目及前一天的答案!
github地址:https://github.com/qappleh/Web-Daily-Question/
个人微信(加我拉你进web全栈学习打卡与技术交流群):