标签:ast 系统资源 扩展性 通信 重载 eve log4j delete 方式
1:构造方法的特点;
方法名,类名相同,无返回值,参数列表不同,不能手动调用;自动默认无参构造
作用:创建对象
2:抽象类和抽象方法的特点:
抽象方法在抽象类中,抽象方法无方法体,(方法名,修饰类型,返回值类型,)
3:方法重载和方法重写的区别
重写在子类中 ,方法名相同,参数列表相同,返回值相同或者是其子类,访问修饰符不能比父类更严格
(子父类中,继承中)
重载在同类中,方法名相同,参数列表不同,与返回值和访问修饰符无关(在一个类中,本类中)
4:使用继承有什么特点,继承的优点;
特点:继承(继承前不属于自己,继承后属于自己,继承后自己可以随意使用,
不能继承:private成员 ,构造方法,子类与父类不在同包,使用默认访问权限的成员)
优点:方便修改代码,减少代码量
5:多态的特点,优点;
特点:(多态成员特点)成员变量 编译时看的是左边,运行时看的左边
成员方法 编译时看的是左边,运行时看右边
静态方法 编译时看的是左边,运行时看的也是左边
优点:减少代码量,提高代码的可扩展性和可维护性
多态的成员特点:
6:多态的实现方式;
使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态
7:如何编写接口;(接口是特殊的抽象类,接口只有返回值,方法名,参数)
8:接口的作用;
方便查看实现的实例代码
9:接口和抽象类的区别;
接口的特性
接口不可以被实例化
实现类必须实现接口的所有方法
实现类可以实现多个接口
接口中的变量都是静态常量
10:什么是异常,你如何理解;
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
11:如何处理异常,异常的关键字;
try,catch、 finally、throw、throws
多个异常时,从小到大进行处理
12:常见的异常种类;
null,Exception,空指针异常,数据异常
13:如何使用log4j记录日志;
作用:记录何时何地犯得什么错进行记录下来。
14:常见的集合有哪些,常用的方法;
ArrayList,LinkedList,List,
15:list,set,map 各有什么异同;
List 接口存储一组不唯一,有序(插入顺序)的对象
【ArrayList(数组,经常进行存取),LinkedList(链表式,操作头和尾)因为有序值可以重复,
A速度比L慢,A再取值时更方便。】
Set 接口存储一组唯一,无序的对象 (方便存储)
(数据不可重复,无序,存最快取最慢,)
Map接口存储一组键值对象,提供key到value的映射
(键值对)键不可以重复,值可以重复。
16:和数组类型采用相同结构的是那个集合;
17:什么是foreach循环;
便利数组,展示数据,map集合
18:线程与进程的区别;
进程:应用程序的执行实例有独立的内存空间和系统资源(大路到终点)
线程:进程中执行运算的最小单位,可完成一个独立的顺序控制流程,CPU调度和分派的基本单位
(同时进行的数量)(小路到终点)
19:实现线程有哪几种方法;
(1)继承Thresd类
(2)实现Runnable接口
(3)实现Callable接口
(4)创建线程池
20:线程的生命周期是什么;
创建,就绪(不会消耗资源),运行(消耗资源),阻塞(由于外界原因停止,消耗资源),死亡(不会消耗资源)
就绪和堵塞都是在等待数据运行,不同点是一个消耗资源,一个不消耗资源
线程的调度:线程优先级,线程的休眠,线程的强制运行,线程的礼让
21:简单解释一下线程休眠,线程强制执行,线程礼让,以及他们的实现方式
22:什么情况下需要线程同步
(1)线程休眠: Thread.sleep(long millis) 进入阻塞状态,睡眠时间过后,会在进入可运行状态
(2)线程强制执行: thread.join() 进入阻塞状态,等待其他线程结束后再执行本线程
(3)线程礼让: Thread.yield() 进入就绪状态,不转为阻塞状态; 暂停当前线程,
允许其他线程(具有相同优先级的线程),获得运行机会,只是提供一种可能,但是不能保证一定会实现礼让;
23:什么是流,流常见的种类有哪些,使用流的过程中需要注意哪些问题
加载条,通过流来处理文件
流:是指一连串流动的字符,是以先进先出方式发送信息的通道,(通过流来读写文件)
字符流,字节流,输入流,输出流,
开和关的问题,用完之后关流 finaly
24:脏读,幻读,不可重复读
脏读:当事务1修改了一条记录,没有提交时,事务2读取了该记录;
当事务1回滚了,那么事务2的记录就是一条不存在的记录;
不可重复读:当事务1读取了一条记录,未提交事务,事务(2修改了该条记录并且提交事务;
事务1又读取了该条记录,发现两条记录不一样;
幻读:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条
或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。
不可重复读和幻读比较:两者有些相似,但是前者针对的是update或delete,后者针对的insert。
25:hashmap,hashtable
1、继承的父类不同
Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。
2、线程安全性不同
javadoc中关于hashmap的一段描述如下:此实现不是同步的。如果多个线程同时访问一个哈希映射,
而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。
26:string ,stringbufffer
27:处理线程同步的方法:
1:临界区(CCriticalSection)
当多个线程访问一个e799bee5baa6e997aee7ad94e78988e69d8331333335336532独占性共享资源时,可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程放弃临界区为止。具体应用方式:
1、 定义临界区对象CcriticalSection g_CriticalSection;
2、 在访问共享资源(代码或变量)之前,先获得临界区对象,g_CriticalSection.Lock();
3、 访问共享资源后,则放弃临界区对象,g_CriticalSection.Unlock();
2: 事件(CEvent)
事件机制,则允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务。
比如在某些网络应用程序中,一个线程如A负责侦听通信端口,另外一个线程B负责更新用户数据,
利用事件机制,则线程A可以通知线程B何时更新用户数据。每个Cevent对象可以有两种状态:
有信号状态和无信号状态。Cevent类对象有两种类型:人工事件和自动事件。
自动事件对象,在被至少一个线程释放后自动返回到无信号状态;
人工事件对象,获得信号后,释放可利用线程,但直到调用成员函数ReSet()才将其设置为无信号状态。
在创建Cevent对象时,默认创建的是自动事件。
1、1234CEvent(BOOL bInitiallyOwn=FALSE, BOOL bManualReset=FALSE,
LPCTSTR lpszName=NULL, LPSECURITY_ATTRIBUTES lpsaAttribute=NULL);
bInitiallyOwn:指定事件对象初始化状态,TRUE为有信号,FALSE为无信号;
bManualReset:指定要创建的事件是属于人工事件还是自动事件。TRUE为人工事件,FALSE为自动事件;
后两个参数一般设为NULL,在此不作过多说明。
2、BOOL CEvent::SetEvent();
将Cevent类对象的状态设置为有信号状态。如果事件是人工事件,则Cevent类对象保持为有信号状态,
直到调用成员函数ResetEvent()将其重新设为无信号状态时为止。如果为自动事件,则在SetEvent()后
将事件设置为有信号状态,由系统自动重置为无信号状态。
3、BOOL CEvent::ResetEvent();
将事件的状态设置为无信号状态,并保持该状态直至SetEvent()被调用为止。
由于自动事件是由系统自动重置,故自动事件不需要调用该函数。
一般通过调用WaitForSingleObject()函数来监视事件状态。
3:互斥量(CMutex)
互斥对象和临界区对象非常相似,只是其允许在进程间使用,而临界区只限制与同一进程的各个线程之间使用,
但是更节省资源,更有效率。
4、 信号量(CSemphore)
当需要一个计数器来限制可以使用某共享资源的线程数目时,可以使用“信号量”对象。CSemaphore类对象
保存了对当前访问某一个指定资源的线程的计数值,该计数值是当前还可以使用该资源的线程数目。
如果这个计数达到了零,则所有对这个CSemaphore类对象所控制的资源的访问尝试都被放入到一个队列中等待,
直到超时或计数值不为零为止。
28.1、synchronized关键字的作用域有二种:
(1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问
这个对象的synchronized方法(如果一个对象有多个synchronized方法,
只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中
任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。
也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法;
(2)是某个类的范围,synchronized static aStaticMethod{}防止多个线程同时访问这个类中的
synchronized static 方法。它可以对类的所有对象实例起作用。
2、除了方法前用synchronized关键字,synchronized关键字还可以用于方法中的某个区块中,
表示只对这个区块的资源实行互斥访问。用法是: synchronized(this){/*区块*/},它的作用域是当前对象;
3、synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是
synchronized f(){},而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法;
标签:ast 系统资源 扩展性 通信 重载 eve log4j delete 方式
原文地址:https://www.cnblogs.com/zjx-959/p/13035615.html