1. 如何手写一个JQ插件?

方式一:
$.extend(src)
该方法就是将src合并到JQ的全局对象中去:
$.extend({
log: ()=>{alert('撩课itLike');}
}); 方式二:
$.fn.extend(src)
该方法将src合并到jquery的实例对象中去:
$.fn.extend({
log: ()=>{alert('撩课itLike');}
});
说说平衡二叉树?
平衡二叉搜索树(Self-balancing binary search tree)
又被称为AVL树。 具有以下性质: )它是一棵空树或它的左右两个子树
的高度差的绝对值不超过1,
并且左右两个子树都是一棵平衡二叉树。 )平衡二叉树必定是二叉搜索树,反之则不一定。 )平衡二叉树的常用实现方法有红黑树、AVL、
替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的公式如下:
F(n)=F(n-)+F(n-)+ 备注:
1是根节点,
F(n-)是左子树的节点数量,
F(n-)是右子树的节点数量。

3. 清除浮动和解决垂直外边距重叠的解决方案?

问题描述:
) 父元素没有设置宽高,尺寸由子元素撑起;
子元素一旦浮动,父元素高度会发生塌陷。
)子元素设置margin-top会作用的父元素的margin-top;
此时会造成垂直外边距重叠。
撩课小编:
.clearfix::after,
.clearfix::before{
content: ' ';
display: table;
clear: both;
}

4. sessionStorage 、localStorage 和 cookie ?

相同点:
都用于浏览器端存储的缓存数据; 不同点:
) 存储内容是否发送到服务器端 当设置了Cookie后,数据会发送到服务器端,
造成一定的宽带浪费;xxxstorage则会将数据保存
到本地,不会造成宽带浪费; ) 数据存储大小不同 Cookie数据不能超过4K,适用于会话标识;
xxxstorage数据存储可以达到5M; ) 数据存储的有效期限不同 cookie只在设置了Cookid过期时间
之前一直有效,即使关闭窗口或者浏览器; sessionStorage,仅在关闭浏览器之前有效;
localStorage,数据存储永久有效; ) 作用域不同
cookie和localStorage是在同源同窗口中
都是共享的;
sessionStorage不在不同的浏览器窗口
中共享,即使是同一个页面;

5. 判断一个单词是否是回文?

回文是指把相同的词汇或句子,
在下文中调换位置或颠倒过来,
产生首尾回环的情景,
叫做回文,也叫回环。
比如 cacac,redivider 。 let checkPalindrom = (str)=>{
return str ===
str.split('').reverse().join('');
}

6. 不借助临时变量,进行两个整数的交换?

撩课小编:输入 a = , b =, 输出 a = , b =
let swap = (a , b)=>{
b = b - a;
a = a + b;
b = a - b;
return [a,b];
}

7. 运用JS 实现二叉查找树?

二叉查找树,也称二叉搜索树、有序二叉树;
是指一棵空树或者具有下列性质的二叉树:
) 任意节点的左子树不空,
则左子树上所有结点的值均
小于它的根结点的值; ) 任意节点的右子树不空,
则右子树上所有结点的值
均大于它的根结点的值; ) 任意节点的左、右子树
也分别为二叉查找树; ) 没有键值相等的节点。 ) 二叉查找树相比于其他数据结构
的优势在于查找、插入的时间复杂度较低,
为O(log n)。 二叉查找树是基础性数据结构,
用于构建更为抽象的数据结构,
如集合、multiset、关联数组等。 实现: )先设定好每个节点的数据结构
class Node {
constructor(data, left, right) {
this.data = data;
this.left = left;
this.right = right;
}
} )树是由节点构成,由根节点逐渐延生到各个子节点,
因此它具备基本的结构就是具备一个根节点,
具备添加,查找和删除节点的方法。 class BinarySearchTree extend Node{
constructor(data, left, right) {
super(data, left, right);
this.root = null;
}
insert(data) {
let n = new Node(data, null, null);
if (!this.root) {
return this.root = n;
}
let currentNode = this.root;
let parent = null;
while () {
parent = currentNode;
if (data < currentNode.data) {
currentNode = currentNode.left;
if (currentNode === null) {
parent.left = n;
break;
}
} else {
currentNode = currentNode.right;
if (currentNode === null) {
parent.right = n;
break;
}
}
}
}
remove(data) {
this.root = this.removeNode(this.root, data)
}
removeNode(node, data) {
if (node === null) {
return null;
}
if (data === node.data) {
if (node.left == null && node.right == null) {
return null;
}
if (node.left === null) {
return node.right;
}
if (node.right === null) {
return node.left;
}
let getSmallest = (node) =>{
if(node.left === null &&
node.right == null) {
return node;
}
if(node.left !== null) {
return node.left;
}
if(node.right !== null) {
return getSmallest(node.right);
}
}
let temNode = getSmallest(node.right);
node.data = temNode.data;
node.right = this.removeNode(temNode.right,temNode.data);
return node;
} else if (data < node.data) {
node.left = this.removeNode(node.left,data);
return node;
} else {
node.right = this.removeNode(node.right,data);
return node;
}
}
find(data) {
let current = this.root;
while (current !== null) {
if (data == current.data) {
break;
}
if (data < current.data) {
current = current.left;
} else {
current = current.right
}
}
return current.data;
}
}

撩课-Web大前端每天5道面试题-Day11的更多相关文章

  1. 撩课-Web大前端每天5道面试题-Day10

    1. px和em的区别? px和em都是长度单位; 区别是: px的值是固定的,指定是多少就是多少, 计算比较容易. em得值不是固定的,并且em会继承父级元素的字体大小. 浏览器的默认字体高都是16 ...

  2. 撩课-Web大前端每天5道面试题-Day4

    1. 如何实现瀑布流? 瀑布流布局的原理: ) 瀑布流布局要求要进行布置的元素等宽, 然后计算元素的宽度, 与浏览器宽度之比,得到需要布置的列数; ) 创建一个数组,长度为列数, 里面的值为已布置元素 ...

  3. 撩课-Web大前端每天5道面试题-Day1

    1. var的变量提升的底层原理是什么? JS引擎的工作方式是: 1) 先解析代码,获取所有被声明的变量: 2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到 ...

  4. 撩课-Web大前端每天5道面试题-Day31

    1.web storage和cookie的区别? Web Storage的概念和cookie相似, 区别是它是为了更大容量存储设计的. Cookie的大小是受限的, 并且每次你请求一个新的页面的时候C ...

  5. 撩课-Web大前端每天5道面试题-Day25

    1.web前端开发,如何提高页面性能优化? 内容方面: .减少 HTTP 请求 (Make Fewer HTTP Requests) .减少 DOM 元素数量 (Reduce the Number o ...

  6. 撩课-Web大前端每天5道面试题-Day7

    1. 你能描述一下渐进增强和优雅降级之间的不同吗? 定义: 优雅降级(graceful degradation): 一开始就构建站点的完整功能, 然后针对浏览器测试和修复 渐进增强(progressi ...

  7. 撩课-Web大前端每天5道面试题-Day30

    1.什么叫优雅降级和渐进增强? 优雅降级: Web站点在所有新式浏览器中都能正常工作, 如果用户使用的是老式浏览器, 则代码会针对旧版本的IE进行降级处理了, 使之在旧式浏览器上以某种形式降级体验却不 ...

  8. 撩课-Web大前端每天5道面试题-Day23

    1.为什么用Nodejs,它有哪些优缺点? 优点: 事件驱动,通过闭包很容易实现客户端的生命活期. 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通 ...

  9. 撩课-Web大前端每天5道面试题-Day16

    1.for循环中的作用域问题? 写出以下代码输出值,尝试用es5和es6的方式进行改进输出循环中的i值. ; i<=; i++) { setTimeout(function timer() { ...

随机推荐

  1. centos7修改静态ip地址

    今天逛园的时候突然发现这篇有关网络参数修改的文章写的很好,简单又使用,格式也很好的,所以就引用过来了. http://www.cnblogs.com/hongdada/p/6666932.html

  2. 修改linux的文件时,如何快速找到要修改的内容

    ♦ 在linux系统下,找到需要修改的文件.使用cd+目录的命令进行文件所在的目录,使用ls命令查看是否有该文件. ♦ 使用vim+文件名,打开该文件 ♦ 快速在文件中找到需要修改的地方.如我们需要修 ...

  3. 空行会影响 Java 编译吗?

    简评:往往越简单的问题越容易被人们忽略. 问题 这个月的 Stack Overflow 有篇热门文章是国外有位开发者提出: 当我仅仅对 Java 类增加了一行空行,为什么编译后得到了两个不同的字节码文 ...

  4. 10分钟教你用Python打造微信天气预报机器人

    01 前言 最近武汉的天气越来越恶劣了.动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了.好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧 ...

  5. shell ssh远程执行命令

    [root@backup shell]# vi backup.sh #!/bin/sh ipAddress=172.17.167.38 ssh -tt root@$ipAddress -p 22 &l ...

  6. Developer Friendly | 基础设施即代码的事实标准Terraform已支持京东云!

    Developer Friendly | 基础设施即代码的事实标准Terraform已支持京东云! Chef.Puppet.Ansible.SaltStack 都可以称为配置管理工具,这些工具的主要目 ...

  7. RocketMQ之NameServer学习笔记

    org.apache.rocketmq.namesrv.NamesrvController NameserController,NameServer的核心控制类. 1.1 NamesrvConfig ...

  8. Cinderella

    Chapter 1 Ella, Ella, CinderellaThere is a beauiful girl. Her name is Ella.She lives with a wicked s ...

  9. LINQ to Entities does not recognize the method , and this method cannot be translated into a store expression 解决办法

    根据用户输入的起始日期,查询以起始日期开始的前20条记录,在ASP.NET MVC的Controller代码中这样写: var Logs = db.Log.Take(20); if (!string. ...

  10. Linux网络编程服务器模型选择之循环服务器

    在网络程序里面,通常都是一个服务器处理多个客户机,为了出个多个客户机的请求,服务器端的程序有不同的处理方式.本节开始介绍Linux下套接字编程的服务器模型选择,主要包括循环服务器模型.并发服务器模型. ...