java学习(十三)
1、int和Integer、final关键字
- Integer是int的包装类,int是基本数据类型
- Integer变量必须实例化后才能使用,int变量不需要
- Integer实际是对象的引用,指向new的Integer对象,int是直接存储数据值
- Integer的默认值为null,int的默认值为0
final关键字:
修饰类时:类可以实例化,不可被继承,例如String;
修饰方法时:方法不可被重写,比如Object的wait;
修饰属性时:常量,一旦初始化后,不可被赋值。
2、hashmap的get、rehash
get:根据key的hashcode算出元素在数组中的下标,之后遍历Entry对象链表,直到找到元素为止。
rehash的解释:在创建hashMAP的时候可以设置参数,一般默认
初始化容量:创建hash表时桶的数量
负载因子:负载因子=map的size/初始化容量,当hash表中的负载因子达到负载极限的时候,hash表会自动成倍的增加容量(桶的数量),并将原有的对象重新的分配并加入新的桶内,这称为rehash。
3、输入网址发生了哪些事情
在浏览器中输入一个网址,首先要做的是域名的解析,也就是域名->ip的解析,依次查看了浏览器缓存,系统缓存,hosts文件,路由器缓存,递归搜索根域名服务器,直到找到最终的ip地址。
然后就是TCP协议的三次握手建立连接。由浏览器发送一个HTTP请求,经过路由器转发,通过服务器的防火墙,该HTTP请求到了服务器;服务器处理该HTTP请求,返回一个HTML文件,浏览器解析该HTML文件,并且渲染显示到浏览器端。
4、HTTP和HTTPS及其区别
- HTTP是超文本传输协议,是一种无状态的协议,是常见的一种应用层协议。HTTP是一个通信规则,规定了客户端发送给服务端的内容格式,也规定了服务器发送给客户端的内容格式。
- HTTP是超文本传输协议,数据是明文传输的;HTTPS在HTTP的基础上加入了SSL协议,实现数据的加密传输;
- HTTPS需要去申请证书,一般是要收费的;
- HTTP默认使用80端口,HTTPS默认使用443端口
5、HTTP请求格式
首行,协议头,空行,正文
6、GET与POST的区别
- GET一般用来从服务器上查询获取资源;POST一般用来更新服务器上的资源;
- GET方法将参数直接拼接到了URL的后面,明文显示,可以通过浏览器地址栏直接访问;
- POST请求用于提交表单,数据不是明文的,安全性更高;
- GET请求有长度限制,POST请求则没有。
7、若建立连接时间比较长,HTTP是怎么优化的
- 并行连接(能够同一时候和多台server建立HTTP连接)
- 持久连接
- 管道化连接
- 复用的连接
8、Java中public,protected,default(什么也不写),private的区别
- 对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类,接口,异常等。它往往对于对外的情况,也就是对象或类对外的一种接口的形式。
- 对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以使用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。
- 对于default来说,有的时候也称为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类,接口,异常等,都可以互相访问,即使是父类没有用protected修饰的成员也可以。
- 对于private来说,它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰为private的,它们不希望被其他任何外部的类访问。
9、子类可以继承父类哪些访问限定符修饰的方法
public,protected,default(什么也不写)
10、如何使得一个函数不被覆写
添加final关键字修饰
11、静态内部类和匿名内部类的区别
静态内部类:
只能访问外部类的静态成员变量与静态方法。
静态内部类的非静态成员可访问外部类的静态变量,而不可访问外部类的非静态变量。
匿名内部类:
没有类名,没有class关键字也没有extends和implements等关键字修饰。
类的定义和对象的实例化同时进行。
12、内部类如何调用外部类的方法
Outter.this.方法名
13、四种引用
强引用:普通存在, P p = new P(),只要强引用存在,垃圾收集器永远不会回收掉被引用的对象;
软引用:通过SoftReference类实现,在内存不足时,进行回收;
弱引用:通过WeakReference类实现,每次垃圾回收时肯定会回收它;
虚引用:通过PhantomReference类实现,只是为了对象被回收的时候收到一个系统通知。
14、TCP核心机制
滑动窗口,快速重传机制,拥塞控制机制等。
15、内存泄漏与内存溢出关系
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间。
memory leak会最终会导致out of memory!
根据相关面试及学习进行归纳总结