大前端每日一题,从基础到进阶,从原理到实战,带你构建高级前端知识体系

 

第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全栈学习打卡与技术交流群):

发布了193 篇原创文章 · 获赞 139 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/qappleh/article/details/96853077