HashMap和HashSet的区别:
HashMap: HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键。Map接口有两个基本的实现,HashMap和TreeMap。TreeMap保存了对象的排列次序,而HashMap则不能。HashMap允许键和值为null。HashMap是非synchronized的,但collection框架提供方法能保证HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map。
HashSet: HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。
区别:
排序算法:
不稳定性排序:选择排序、快速排序、希尔排序、堆排序
稳定排序:插入排序、冒泡排序、归并排序、基数排序
二分查找的时间复杂度一般是O(logn)
排序的时间复杂度一般是O(nlogn)
进程与线程的区别:
1.进程要分配一大部分的内存,而线程只需要分配一部分栈就可以了
2.一个程序至少有一个进程,一个进程至少有一个线程
3.进程是资源分配的最小单位,线程是程序执行的最小单位
4.一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行
Http的状态码有哪些:
200:请求成功;
400:请求语法有错误,不能被服务器所理解;
404:请求资源不存在;
500:服务器发生不可预期的错误;
503:服务器不能处理客户请求;
OSI七层模型:
超文本传输协议(Http),端口是 80,连接简单,无状态,应用于浏览器和网站服务器之间的数据传输,以明文方式发送内容,不提供密钥方式的加密。
Https协议:安全的超文本传输协议,端口是443,Https协议需要申请CA证书,具有安全性的SSL加密传输协议,由SSL+HTTP协议构成的可进行加密传输、身份认证的网络协议。
FTP协议:文件传输协议,端口是21,有效的将文件从一台移到另一台上。 SMTP协议:电子邮件传输协议,端口是25,用于电子邮件的收发。
DNS协议:域名解析协议,端口是53,将域名转化为IP地址(也可以将IP地址转化为相应的域名地址)。
传输层:
TCP协议:传输控制协议,端口是6;
UDP协议:用户数据报协议,端口是17,面向连接不可靠的传输协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。
TCP与UDP的比较:
TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务;虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为; 对数据准确性要求高,速度可以相对较慢的,可以选用TCP。
URL与URI的区别:
URL:表示是一个地址,可以提供该资源路径,URL是URI的子集。
URI:统一资源标识符,表示一个网络资源,如HTML文档、图像等。
抽象类和接口的区别:
含有abstract修饰符的class即为抽象类,abstract类不能创建实例对象。 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。
语法区别:
(1)抽象类可以有构造方法,接口中不能有构造方法;
(2)抽象类中可以有普通成员变量,接口中没有普通成员变量;
(3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法;
(4)抽象类中的抽象方法的访问类型可以是public,protect,但接口中的抽象方法只能是public类型的,并且默认public abstract类型;
(5)抽象类中可以包含静态方法,接口中不能包含静态方法;
(6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型;
(7)一个类可以实现多个接口,但只能继承一个抽象类。
应用上的区别:
接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用。
抽象类是对事物的抽象化,包括这个事物的面貌、行为等属性综合的抽象。接口是对这个事物行为的抽象化。
列举JavaScript的所有变量类型-7种:
(1)number (2)string (3)boolean (4)null (5)undefined (6)symbol (7)object(array,function)
typeof 检查变量类型
NaN - not a number 基本类型值传递,数组、对象引用传递
==和equals的区别?
1.= =是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同
2.= =是指对内存地址进行比较 , equals()是对字符串的内容进行比较
3.= =指引用是否相同, equals()指的是值是否相同 ,= = 是java提供的等于比较运算符,用来比较两个变量指向的内存地址是否相同,而equals()是Object提供的一个方法.Object中equals()方法的默认实现就是返回两个对象= =的比较结果.但是equals()可以被重写,所以我们在具体使用的时候需要关注equals()方法有没有被重写。
规约: 【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。 说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断。
重载和重写区别?
1、重写实现的是运行时的多态,而重载实现的是编译时的多态。
2、重写的方法参数列表必须相同;而重载的方法参数列表必须不同。
3、重写的方法的返回值类型只能是父类类型或者父类类型的子类,而重载的方法对返回值类型没有要求。
从网页输入一个url,到出现页面的整个过程?描述一下
(1)输入网址:缓存解析浏览器获取了这个url,就去解析了,它先去缓存当中去看看有没有,从浏览器缓存-系统缓存-路由器缓存当中查看,如果有从缓存当中显示页面,否则进行下一步;
(2)DNS解析:在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址;
(3)浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手;
(4)握手成功后,浏览器向服务器发送http请求,请求数据包;
(5)服务器处理收到的请求,将数据返回至浏览器;
(6)浏览器收到http响应,读取页面内容,浏览器渲染,解析html源码。