面试宝典读书笔记

面试宝典

”==“运用在基本数据类型的时候 通过比较他们的实际值来判断是否相同,而用于比较引用类型时候,则比较两个引用地址是否相等,也就是是否指向同一个对象。
equals 方法是java.lang.object方法,也就是所有java类都会有的方法,它可以被程序猿重写,通过自定义方式比较两个值是否相等,对于字符串String类来说,他的equals方法用来比较字符串字符是否相等。

hashtable的方法是同步的 hashmap不能同步
hashTable不允许null值(key和value都不可以)
hashMap允许null值 key和value都可以
hashTable有一个contains方法 功能和containsValue功能一样
hashTable使用Enumeration hashMap使用Iterator
hashTable中hash数组的初始化大小及其增长方式不同。
哈希值的使用不同,hashTable直接使用对象的hashcode,
而hashMap会重新计算hash值

在根类Object中包含以下方法:

clone();
equals();
finalize();
getClass();n]
notify(),notifyAll();
hashCode();
toString();
wait();

线程是进程中的一个执行单元 又称为轻量级进程,他和进程一样具有独立的执行控制 由操作系统负责调度。
多线程:允许程序中并发的执行多个指针流,每个指针流都称为一个线程,多线程进制下的线程彼此间相互独立,比较容易共享数据,通过并发执行的方式来提高程序的效率和性能。

进程的普通解释是程序的一次执行
而线程可以理解为进程中执行的一段程序片段,也就是他们首先是一种包含关系。

多线程共存于应用程序中,是现代操作系统的基本特征和重要标志。在window、unix等多任务操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志。操作系统,根据分配的标志对应用程序的执行进行调度和系统资源分配,也就是说【进程是占用系统资源的基本单位】
线程的划分 尺度小于进程,使得多线程程序的并发性高。
进程在执行过程中拥有独立的内存单元,而多个线程共享内存。多线程在共享数据方面更加方便,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的每个独立的进程都有一个程序运行的入口,顺序执行序列和程序的出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程控制。

进程和线程的区别
1、进程是一个程序,而线程是一个程序的一小部分。
2、进程是系统分配资源的最小单位,线程可以共享资源。
3、每个独立进程都有程序入口出口。但是线程不能独立执行,必须依存在应用程序中由应用程序提供多个线程控制。
4、进程之间相互独立 通信较难,线程共享一块内存区域,通信比较方便。

runnable和Thread区别
线程类继承自Thread不能继承其他类 而runnable接口可以。
线程类继承自Thread相对于Runnable来说,使用线程的方法更方便一些。
!!重点!!实现runnnable接口的线程类的多个线程,可以更方便的访问同一变量,而Thread类需要内部类代替。

反射是为了动态的加载一个类,动态的调用一个方法,动态的访问一个属性等动态要求设计的,他的出发点就在于JVM会为每个类创建一个java.lang.Class类的实例,通过该对象获取这个类的信息,然后通过使用java.lang.reflect包下的API以达到各种动态需求。

TCP协议特点
1、面向连接的传输
2、端到端的通信
3、可靠性、确保传输数据的正确性,不出现丢失或乱序
4、采用字节流方式,即以字节流为单位传输字节序列。
UDP协议特点
1、udp是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传输时就简单的去抓取来自应用程序的数据,并尽可能把它扔到网络上,
2、不需要维护连接状态,包括收发状态,
3、字节开销很小
4、吞吐量主要受应用软件生成数据速率、传输带宽、源端和终端主机性能等因素的限制。

java跨平台特性不是因为源代码,而是因为编译之后的.class字节码文件

var string 迭代过程中当次变量引用名称,一般用于循环过程中数据的打印。
items Object 集合对象,必须是可迭代的对象,如 List、set等
begin int 迭代的初始数字 必须为整数
end int 迭代的结束数字 必须为整数
step int 每次的增量 默认为1
varStatus String 通过他可以获取迭代中一些数据 迭代总数 当前迭代索引值等

MVC model模型 view视图 controller控制器
模型model 代表了应用程序的数据和处理这些数据的规则。当模型发生改变时,他会通知视图,并为视图提供查询相关状态的能力。
视图 view 用来组织模型的内容,他从模型中获取数据,然后将数据展现给用户,该角色往往由jsp来承担。
控制器 controller 负责从客户端接受请求,并把这些请求转换成某种行为。这些行为往往由模型来实现,完成后再选择一个视图来呈现给用户

依赖注入指的是组件之间的依赖关系由容器在运行时决定。控制权由对象本身转向容器,由容器根据配置文件去创建实例,并创建各个实例之间的依赖关系。他的设计思想在于业务代码与程序本身的结构代码分开。容器尽量不要侵入到应用程序中去,应用程序本身可以依赖于抽象的接口,容器根据这些接口所需要的资源注入到应用程序中,也就是说应用程序不会主动向容器请求资源:容器会自动把这些对象给应用程序。
IOC容器的核心是spring提供的Bean工厂 BeanFactory。在Spring中 Bean工厂创建的各个实例称作Bean。Bean工厂负责读取Bean定义文件,管理对象的加载、生成,维护Bean对象与其他Bean对象的依赖关系,负责Bean的生命周期。对于简单的应用程序来说,使用BeanFactory就足够来管理Bean了,在对象的管理上就可以获得许多的便利,而很少看到new语句。
默认情况下 BeanFactory生产的Bean实例采用的是单例模式,也就是说一个IOC容器产生A对象只有一个。

java,exe是java虚拟机 运行工具
javadoc.exe用来制作java文档
jdb.exe是java的调试器
javaprof,exe是剖析工具

distinct SQL中用来去重复的

1、并发:在操作系统中,是指一个时间段中【有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在一个处理机上运行】。其中两种并发关系分别是并发和互斥。
2、互斥:进程间的【相互排斥的使用临界资源】的现象就叫互斥。
3、同步:进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步说明:【就是前一个进程的输出作为后一个进程的输入,当第一个进程没有输出时,第二个进程必须等待】。具有同步关系的一组并发进程又有真并发与伪并发。伪并发是指单核处理器的并发,真并发是指多核处理器的并发。
4、并行、在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种:在多处理器系统中,进程不仅可以交替执行,而且可以重叠执行。在多处理器上的程序才可实现并行处理。从而可知,并行是针对【多处理器】而言的。并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也可以说并发事件不一定要同一时刻发生。
5、多线程:多线程是程序设计的逻辑层概念,它是【进程中并发运行】的一段代码。多线程可以【实现线程间的切换执行】。
6、异步:异步和同步的相对的,同步是顺序执行,执行完一个在执行下一个,需要等待、协调运行。异步就是【彼此独立,在等待某事件的过程中继续自己的事,不需要等待这一事件完成后再工作】。线程就是实现异步的一个方式,异步是让调用方法的主线程不需要同步等待零一线程的完成,从而可以让主线程干其他的事情。

异步和多线程并不是一个同等关系,异步是最终目的,多线程知识我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回可以做其他事情。实现异步可以采用多线程技术或交给另外的线程来处理。

floor: 求小于参数的最大整数。返回double类型

例如:Math.floor(-4.2) = -5.0

ceil: 求大于参数的最小整数。返回double类型

例如:Math.ceil(5.6) = 6.0

round: 对小数进行四舍五入后的结果。返回int类型
例如:Math.round(-4.6) = -5

你可能感兴趣的:(面试问题)