JavaScript
文章平均质量分 80
铛铛铛铛Huan
把简单的事做好就是不简单!
展开
-
从浏览器地址栏输入回车后会发生什么?
前言在前端面试中,往往会有一个非常经典的面试题,从浏览器地址栏输入地址,并敲下回车后会发生什么?这是一个非常宽泛、考察知识广度和深度的题目。还记得最开始回答这个问题时,首先想到的是DNS解析-> 请求数据 -> HTML解析、CSS解析 -> 构造DOM树 -> 构造渲染树 -> 浏览器根据渲染树进行渲染,将页面展示到浏览器界面上。后来接触了winter老师的重学前...原创 2020-03-12 21:23:52 · 297 阅读 · 0 评论 -
哔哩哔哩前端面试
一面: 1. 如何实现一个同花顺?写代码如何实现?(七张牌同一花色并且数字相连) 2. display有哪些属性值? 3. 块级元素与内联元素的区别? 4. 冒泡排序的复杂度是多少?快排呢? 5. 如何实现快排? 6. JS的基本数据类型 7. 获取DOM节点的几个方法? 8. 如何给DOM节点上添加事件? 9. 如何实现水平垂直居中? 10. position的属性值有哪些?原创 2017-09-19 15:07:01 · 3974 阅读 · 1 评论 -
JavaScript设计模式-发布订阅模式
何为设计模式?设计模式其实可以认为是大家约定俗成的一个东西,比如在篮球场上的一些术语,在篮球场上争分夺秒的时候,不可能教练一步一步指导你去怎么做,而是告诉你一个术语,你立马就能反应出来该怎么做。这就是设计模式的现实版例子。在JavaScript开发中,有很多设计模式,经常面试也会被问到一些,比如说发布/订阅者模式,单例模式,迭代器模式等等。今天就先拔一拔发布/订阅模式。发布/订阅模式与我们JavaS原创 2017-09-07 16:03:51 · 569 阅读 · 0 评论 -
网易前端面试
这是我经历的最完整的一次面试,面试体验很好,面试官也挺不错,会引导你往哪个方向去思考。一面: 首先是比较帅气的一个小哥,先是让自我介绍,完了之后面试官说讲的太快了(哈哈) 然后问了下实习做的东西,主要用的什么?对React了解多少?讲讲虚拟DOM的概念,Diff算法有了解过吗?MVVM模式有了解吗?然后问如何去判断(跟踪)状态数据变化了,从而触发视图UI? 因为简历里有写看过jQuery源码,原创 2017-09-18 17:43:38 · 1722 阅读 · 0 评论 -
唯品会前端面试
一面: 1. 自我介绍 2. 问了一些简历上的东西 3. 浏览器输入URL按回车之后,都发生了什么? 4. 接着问返回的HTTP响应报文头部里面有什么? 5. git的Diff算法怎么做的? 6. TCP和UDP分别适合什么情况? 7. JavaScript中内存回收机制? 8. 如何判断两个变量是循环引用了? 9. 了解百度的FIS框架吗? 10. 做项目整个开发流程是怎样的?原创 2017-09-26 14:36:08 · 2299 阅读 · 1 评论 -
头条一面
头条视频面感觉很高大上,用牛客网作为平台来进行视频面试的。约的下午两点,一点半进行签到,然后一点四十就开始了。还是每场面试开始时的自我介绍。 1. 问到实习过程中做的什么东西? 2. 提到React组件开发,然后让用React来实现一个轮播组件?主要考虑UI,props和state怎么去设置? 3. 后面又提了新的需求,所以保证组件的通用性还是很重要的。 4. 用原型链如何去实现继承? 5原创 2017-09-17 14:40:51 · 782 阅读 · 0 评论 -
京东前端面经
京东下午三点,现场面: 1. 自我介绍 2. 对React的认识 3. PHP是什么时候用的? 4. 为什么没有考虑用Node 5. 对ES6了解什么? 6. let是做什么用的? 7. 对闭包有了解吗? 8. Promise有什么认识? 9. 有没有了解过ES6的Generator? 10. KOA有什么了解过?CO? 11. 如果来到京东的前端团队,让你做一次分享(主题不限原创 2017-09-24 16:19:06 · 2185 阅读 · 0 评论 -
百度一面
下午正在吃饭,然后一个深圳的电话,说是百度的面试官,看到我的简历,约八点开始面试。首先让自我介绍,并说最好介绍一下自己的优点是什么?TCP三次握手四次挥手了解吗?介绍下。HTTPS的连接是什么样的?有了解过吗?(只说了简单原理,没有看过具体是怎么回事?)HTTP的Cache是怎么结合浏览器的,具体能说下有哪些字段?计算机方面学过哪些课程?(说到了算法)然后问排序算法有哪些?(说到插入排序,原创 2017-09-16 21:12:27 · 788 阅读 · 0 评论 -
美团前端一面
上周四一个小哥打来,问有没有时间,但是时间不合适,他说这周再联系,但是周一等了一天都没有消息,在牛客网上也有人说收到电话说时间不合适,后来就没有然后了,所以很怕自己也是这种情况,幸好当时打过来的是手机号码,所以今天上午就发了条短信,问小哥啥时候有时间能面?等了会就回我了,说定下午4点半可以不? 就这样开始了美团一面。主要问了这么些问题:自我介绍做了哪些项目?项目中遇到的问题?技术栈上遇到什么问原创 2017-09-05 19:31:57 · 1685 阅读 · 0 评论 -
腾讯前端二面
面试官很随和态度也比较温和,看了看简历,因为上面有用到Weex做的项目,就问了问Weex的东西。Weex和RN这种有什么区别?如果手机上有一个应用,打开一个H5页面,有时候是很慢的,怎么去提高性能?平时除了前端语言还有用到什么语言?C++里面的多态了解吗?C语言里面的malloc和C++里面的new有什么不同?下来是数据结构的问题,手机里面有很多联系人嘛,如果要把这些联系人进行排序,并且原创 2017-09-23 09:55:09 · 1802 阅读 · 0 评论 -
JavaScript设计模式-单例模式
在软件开发过程中,我们往往对于一些资源,只需要全局性的一个。比如说唯一的一个线程池,浏览器窗口中唯一的一个window对象等等。这时候,我们需要一类只能有一个实例,并提供一个访问它的全局访问点,这就是单例模式的概念。实现单例模式最简单的,就是设置一个标志,又这个标志来判断是否已经创建了该类。var singleton = function( name ){ this.name原创 2017-09-15 10:57:39 · 501 阅读 · 0 评论 -
美团前端二面+三面+HR
等了一周,迎来了美团的二面,二面面试官是前一天通知的,约好第二天上午面,视频面。今天上午十一点多,等来了二面的电话,然后加了QQ,进行视频面。一开始还是自我介绍。然后在介绍中有说到学前端多久了,然后就问怎么学前端的?后面就开始问一些技术性问题: 1. 如何实现一个计数器;(闭包就可以) 2. 加入上面实现的计数器为f函数。a = f();b = f();a();b();问输出是多少?(这一原创 2017-09-12 14:50:22 · 10067 阅读 · 0 评论 -
ES6语法的新特性
之前面试被问到ES6新特性,箭头函数,generator、Module等等,表示刚开始上手用ES6,目前还没有很深入,所以这次想对ES6一些常用的特性进行整理。let、const主要是实现块级作用域的。因为在原生JS中,没有块级作用域。只有在函数中,才构成一个作用域,但是利用函数是可以实现一个类似于块级作用域的。详见这里。不过,为了更方便的解决类似于下面这种问题:setTimeout(functio原创 2017-08-30 20:06:23 · 1913 阅读 · 0 评论 -
Vue数据驱动原理+源码阅读
实际问题大家在利用Vue进行前端开发过程中,是否遇到过这样的问题:<template> </template>request(url).then(({ data }) =&原创 2019-01-29 15:06:48 · 823 阅读 · 1 评论 -
VUE watch监听对象
今天在项目实现中遇到了关于在Vue中watch监听对象失败的问题,背景是这样的:我在VUE组件中的data里声明了一个空对象:obj: { }然后在某一个函数里面对obj添加某个对象:obj.name = 'liu'再在另一个函数里,对obj的name属性进行修改obj.name = 'yang'监听函数就是大家所熟知的下面这种写法:watch: { obj: { ha...原创 2018-09-25 20:48:39 · 1417 阅读 · 0 评论 -
Vue 生命周期以及子组件和父组件生命周期发生的先后顺序
从没有认真想过Vue组件的生命周期,以为所有的都是按那个顺序发生和执行的,直到今天在完成某一个业务时,才认真去思考组件的生命周期、子组件与父组件创建和挂载的时间点。VUE组件的生命周期子组件与父组件生命周期发生的先后顺序...原创 2018-09-17 21:39:58 · 7806 阅读 · 1 评论 -
Vue v-if和v-show 以及v-if中遇到的坑
最近在项目开发中,遇到一个难以描述的问题: 问题是这样的<FormItem label="类型" required> <RadioGroup v-model="formdata.radio1" @on-change="changetableType($event)"> <Radio v-for="(item, index) i.原创 2018-08-20 22:57:14 · 8837 阅读 · 2 评论 -
Fetch封装方法
何为Fetch?Fetch是一个与AJax请求功能相似的一个请求接口,并且只有浏览器该方法。Fetch的出现一方面是为了缓解原生XMLHTTPRequest实现起来比较杂乱的问题。下面是一个例子:用XHR对象实现Ajax请求: var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.responseT...原创 2018-07-19 21:29:18 · 5239 阅读 · 0 评论 -
NEJ框架学习--实现TODOList
NEJ框架的学习最先着手是从NEJ官网教程开始学起的。NEJ教程 这个教程里有很多小例子,比如火车快跑,主要是对火车节点添加点击事件,从而控制每个块的移动速度;还有日历控件的实现,aJax请求,文件上传,利用JST模板实现Tab切换,表单填写验证,动画实现等等。这个教程里不仅有源代码的详细过程,还有一些讲解,可以说非常详细。另外,可以通过查API文档和Classes文档进行更多了解。下面从初原创 2018-01-28 22:48:10 · 2473 阅读 · 9 评论 -
NodeJS之域名解析器实现
之前草草的了解了下Nodejs, 只是大体知道Nodejs类似于一个JavaScript解析器,可以跑JS代码,但是并没有真正去使用Nodejs,且对其理解并不深,所以打算整体学一学Nodejs。整个学习过程是沿着“Nodejs开发实战详解–黄丹华”这本书来看的,目前学习了Nodejs的模块,分为内建模块和文件模块。并且书中有一个DNS域名解析器的实现,自己动手也做了做,这里想做下整理和总结。原创 2017-12-04 17:05:49 · 5793 阅读 · 0 评论 -
网站性能优化
面试中经常会被问到这类问题,这里做一个总结,可能不会非常全面,希望大家可以一起交流。首先,想跟大家推荐一个浏览器插件YSlow,安装之后浏览器地址栏后面会有一个类似于表盘的图标,如下图: 如何使用呢? 比如要测一下淘宝页面的网站性能,首先打开淘宝页面,然后点击YSlow的小图标,会弹出一个新的浏览器页面,点击Run Test 评估结果如下图所示: 这里不仅有整个的评级,也有各个方面的评级原创 2017-10-11 16:39:35 · 605 阅读 · 0 评论 -
腾讯前端一面
听大家说,腾讯比较注重基础,今天面了一次,感觉确实很注重,不仅仅是在前端方面。首先让自我介绍。 1. 刚介绍完,让写一个堆排序。 2. 后面又让写快排。然后问那个索引值怎么取的?如果这个索引值正好是整个数组的最大值呢?如何去解决这种问题? 3. 有一个div,里面一个a标签,如何把a标签放到与div一级的位置? 4. http和https有什么区别?https有什么缺点?如何去解决? 5.原创 2017-09-21 16:28:02 · 1619 阅读 · 2 评论 -
搜狗前端一面+二面
搜狗笔试没过,听同学说最近有面试,所以去面试地点准备霸面,校招负责人通知交了简历,说后面合适的话会再通知。 第二天(今天)一早收到面试电话,说下午四点半面试,面试官还好心提醒不要迟到。下午去面,感觉人很多,主要总结了下面一些内容: 1. 问了一些怎么学习前端? 2. 说了CSDN博客,然后面试官就登上CSDN博客来看,看了前面一些,后面想到一个考点;JSON的方法有哪些?以及JSON的格式怎么原创 2017-09-12 23:51:22 · 3344 阅读 · 0 评论 -
去哪儿网前端面试
通知的下午五点二十去现场面,然后可能人比较多,等到六点多去面试。还是常规的自我介绍 1. 看我介绍还不错,说难度升高一些问,先是问一个二叉树?有神特点 2. 主要二叉树解决什么问题? 3. 数据库索引了解吗? 4. 平衡二叉树了解吗? 5. 看我答得不是特别理想,说降点难度。jQuery源码整体架构是怎么样的? 4. 讲一讲你熟悉的一部分jQuery源码(当时说的是延迟对象和回调对象)原创 2017-09-22 21:03:26 · 1778 阅读 · 0 评论 -
JavaScript 面向对象思想以及原型、继承
首先,回顾一下JavaScript 对象的概念。每个对象中封装了一些属性和方法,并且这一部分保存在堆内存中,而每个对象实例其实是一个句柄,也就是一个指针,指向堆内存中的那块数据,所以说,这是JavaScript的引用类型。我们创建对象有这么几种方法: 1. 对象字面值的方法:var person = { name : 'liu', age : 22, sayHe原创 2017-05-21 10:41:54 · 169 阅读 · 0 评论 -
IMWEB-Vue 实现Select组件
今天带来一个Select组件的实现。首先,需要了解的是如何用Vue去实现一个组件?这个组件可以直接在HTML中以标签的形式存在。Vue自带一个component函数来定义组件,其参数也是一个对象,其中,template属性就是我们Select的结构;props也是一个对象,用来存储外部传来的参数,相当于是连接外界和组件内部的一个桥梁。如果需要利用事件来改变某些数据从而改变某些结构的原创 2017-04-22 21:21:32 · 2318 阅读 · 0 评论 -
Cookie和Web缓存机制
本周阅读了JS高程的缓存机制部分,对于Cookie和Web缓存机制有了更深的了解,今年二三月份参加实习生电面多次被问到Cookie以及LocalStorage、SessionStorage的区别,当时对于每一部分都有个大致的了解,且没有实际运用,所以趁这次机会,也动手实现了一把,写下这篇博客以整理思路。缓存机制对于用户访问网页来说是很方便的。如果将用户名,偏好设定或者其他一些数据存储到客户端,而不必原创 2017-05-28 11:16:06 · 11111 阅读 · 0 评论 -
JSON是什么?
JSON(JavaScript Object Notation)是一种存储数据的格式,并不是一种编程语言。在过去,开发者常常用xml格式来传输数据,这个比较突出的一点是服务器与服务器通信,但是这种格式比较复杂,并且处理数据时操作也不简单。 相比于xml,JSON表示数据更加简便一些,访问起来也比较容易。 那么如何用JSON来表示数据?简单数据 比如"Hellen" //字符串2原创 2017-05-27 23:12:58 · 357 阅读 · 0 评论 -
利用JS 事件 与 Cnavas绘图 以及 H5 缓存写的一个手势解锁(二)
上次介绍了JS的事件机制,不知道大家是否对事件都有了基本的运用和掌握。当然,这也只是我个人的一些理解。下面是我总结的一些canvas 原理并且结合手势解锁这个目的,我们能够怎么实现。canvas是H5提供的一个新元素,这个元素的功能真的很强大,一个元素结合JS就可以想绘制什么样的图形就能够出现什么样的图形,是不是也很期待怎样用canvas来实现呢?关于canvas元素本身,我想强调是:canvas原创 2017-05-23 11:46:41 · 631 阅读 · 0 评论 -
利用JS 事件 与 Cnavas绘图 以及 H5 缓存写的一个手势解锁(一)
之前参加360前端实习生 星计划时,遇到一个任务,就是利用H5 localStorage实现密码的存入和获取。当时还没有学canvas 绘图,感觉利用原生JS和CSS实现比较复杂;这次刚好看了JS高程的Canvas绘图,所以正好可以理论与实践结合一下,试着做了一下这个。当然,这只是一个初期的效果,后期还会再改善。由于手势绘制密码,需要用到触摸事件的一些东西,所以我会在开头先讲一下JS的事件机制,希望原创 2017-05-22 23:27:05 · 810 阅读 · 0 评论 -
利用JS 事件 与 Cnavas绘图 以及 H5 缓存写的一个手势解锁(三)
上一篇结合在canvas原理中,绘制了手势解锁的初始界面,我们也知道,手势解锁的难点不在于初始界面的绘制,而在于手势移动过程中界面的一系列变化,包括触摸到的点的颜色变化,以及添加的线条路径,这些都是得通过JS交互来实现的,在这个应用中,主要涉及的是JS HTML5事件中的触摸事件。回顾一下,(一)里面的JS事件机制和触摸事件: touchstart: 开始触摸时触发 touchend: 在触摸原创 2017-05-23 12:42:12 · 687 阅读 · 0 评论 -
IMWeb训练营作业【Vue 完成一个TodoList小玩意儿】
这是参加Vue课程的第四天,上了四节课之后对Vue的原理以及用法有了基本的了解,并跟着老师做了一个ToDoList的东西。在学习过程中,感触最深的是: 与原生js 或者jQuery 不同,Vue完全是数据驱动的一个JS框架,即所有页面的改动,都要考虑如何与数据绑定并且如何去操作数据,从而改变页面的视图。 首先,说一下这个ToDoList的功能: 界面如下图所原创 2017-04-19 20:45:22 · 820 阅读 · 0 评论 -
腾讯课堂之Vue 学习
前两天开始学习Vue开发之路,腾讯课堂推出的,只有十天,感觉这是一次不错的机会。所以在自己js水平还一般的情况下,还是选择了学习Vue,当然,基础还是最重要的。第一节: 什么是Vue? Vue 就是 数据驱动 的 渐进式 JavaScript框架。 如何理解数据驱动? 其实就是利用数据来渲染页面,数据的改变直接会影响页面的呈现;原创 2017-04-18 22:38:34 · 883 阅读 · 0 评论 -
JavaScript实现超级玛丽小游戏
昨天做了一个很小的游戏,对作为新手的我来说,还算有点成就感吧,在这里总结一下并与大家分享。当然,这个小游戏还有些瑕疵,做的时候有很多情况没有考虑到,只实现了最基本的功能。 这个游戏的基本界面是这样的:实现的功能就是:点击开始游戏,出现上下左右四个按钮,然后通过点击按钮来改变马里奥的位置,来抓取随机出现的小蘑菇。那么实现这个功能,首要的就是思路,先想应该怎么实原创 2016-11-30 22:08:34 · 8588 阅读 · 2 评论 -
jQuery源码阅读(五)---init函数
在jQuery源码阅读(二)里面,大体介绍了jQuery创建对象时如何创建的,并且对init函数里面的函数进行了梳理,但具体的逻辑还是没有彻底搞清楚,这一篇博客主要是对init函数的一个详细梳理。在理解init函数内部逻辑之前,我们先想想用$()和jQuery()来创建jQuery对象时,参数有哪些可能的情况?或者想想我们平时会用到哪些?这在jQuery源码阅读(二)里面也有说到,我们再来回顾一下:原创 2017-07-07 15:58:58 · 516 阅读 · 0 评论 -
JavaScript 函数以及闭包
JavaScript中函数、闭包可能是用到很频繁的了,并且jQuery框架也是利用函数以及闭包的很多特性,所以掌握函数和闭包的概念对于我们掌握原生javaScript和jQuery源码来说都是非常有帮助的。那么首先从JS函数的创建开始说起。函数的创建又这么三种方式:1. 函数声明,直接上代码://声明函数function FunctionDeclare(){ ale原创 2017-05-19 16:47:38 · 310 阅读 · 0 评论 -
JS 模块化规范
在我们最初写代码的时候,引入JS文件用script标签来引入,并且在引入多个JS文件时,当前文件所依赖的JS文件必须放在前面。也就存在一个顺序的问题,而且这是由开发者去判断和把控的。而现在前端项目越来越复杂,难免会出现很多很多script标签引入JS,这无论对于开发和维护都有着一定的缺点。所以出现了模块化的概念。模块化的形式有很多中,比如把某个特定功能封装成一个函数,但是存在着一个问题,很有可能会出原创 2017-09-04 15:18:13 · 2672 阅读 · 0 评论 -
jQuery源码阅读(二)---初识init方法
上一篇博客大体了解了jQuery整个的架构,即分成jQuery入口模块,底层支持模块以及功能模块这三个大块,并且各个模块之间有一定的联系;下来主要理解了jQuery入口模块,即jQuery对象是如何创建的,其实真正创建的jQuery实例是由jQuery.fn.init()函数创建的,并且为了使得创建的每个对象实例都拥有jQuery对象的属性和方法,即所有jQuery对象共享一份属性和方法代码,这样可原创 2017-07-03 17:05:12 · 730 阅读 · 0 评论 -
jQuery源码阅读(一)---jQuery源码整体架构
之前用jQuery库写了两个小例子(结合Apache、PHP实现的简易聊天室以及音乐播放器),详见我的上两篇博客jQuery aJax技术以及PHP实现简单聊天室、 利用jQuery实现音乐播放器。为了更加深入了解jQuery库的架构以及巩固原生JS的基础和深度,决定刨一刨jQuery源码。jQuery源码架构首先,jQuery源码的整体构架如下:(此图来源于“jQuery技术内幕:深入解析jQue原创 2017-06-25 21:32:15 · 3090 阅读 · 0 评论 -
jQuery源码阅读(七)--init()遗留部分buildFragment()函数
在 jQuery源码阅读(五)—init函数中,已经分析了init函数逻辑的大头,即参数selector为字符串的形式,但这里边仍然有两个为深入看的方法,一个是当selector是复杂标签的形式时,调用的bildFragment()方法,另一个是当selector为各种选择器时,调Sizzle模块的find()方法。这一篇先来看buildFragment()函数的源码,分析该函数在处理参数为复杂标签原创 2017-07-09 15:14:54 · 325 阅读 · 0 评论