选择题
- 关于java中的构造函数
- 构造函数必须与类同名。
- 构造函数没有返回值。
- 构造函数在使用new操作时进行。
- 但是有一点要注意,方法名可以与类名同名,编译可以通过,也可以正常运行。
- 关于非关系型数据库
- 非关系型数据库主要有四种存储类型。键值对存储,文档存储,基于列的数据库,图形数据库。
- 非关系型数据库库的优点:因为是键值对,所以性能较高。可扩展性同样基于键值对,数据之间没哟耦合性。
- 关系型数据库的优点:事务支持使得对于安全性能很高的数据访问要求得以实现。能够保持数据的一致性。
- 非关系型数据库有:临时性键值存储(mamcached,Redis),永久性键值存储(Redis,ROMA),面向文档的数据库(MongoDB),面向列的数据库(HBsae,Cassandra)。
- socket函数中产生阻塞的有
- accept(): 服务器端等待客户的连接,直到接到客户端连接,才从accept()方法返回。
- socket的输入流读入数据时,如果输入流没有足够数据,就会产生阻塞。
- socket的输出流写一批数据的时候,可能会进入阻塞状态,等到输出了所有数据或者出现异常才返回。
- connect():客户端等待服务器端连接,会进入阻塞状态,直到连接成功。
- 设置JVM内存
- -Xmx :Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
- -Xms :Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
- -Xmn :Java Heap Young区大小,不熟悉最好保留默认值;
- -Xss :每个线程的Stack大小,不熟悉最好保留默认值;
- java标识符:
- 所有标识符都以字母,下划线,美元符号开头
- 首字母之后可以是字母,数字,下划线,美元符号
- java中的object类的方法有
- clone():创建并返回此对象的副本
- equals():某个对象是否与此对象相等
- finalize():当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
- getClass():返回一个对象的运行时类。
- hashCode() :返回该对象的哈希码值。
- notify() :唤醒在此对象监视器上等待的单个线程。
- notifyAll() :唤醒在此对象监视器上等待的所有线程。
- toString() :返回该对象的字符串表示。
- wait() :导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
- wait(long timeout) :导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。
- wait(long timeout, int nanos) :导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。
- Thread类的方法:
- start():启动线程
- getId():获得线程ID
- getName():获得线程名字
- getPriority():获得优先级
- isAlive():判断线程是否活动
- isDaemon():判断是否守护线程
- getState():获得线程状态
- sleep(long mill):休眠线程
- join():等待线程结束
- yield():放弃cpu使用权利
- interrupt():中断线程
- currentThread():获得正在执行的线程对象
- 关于容器间的继承
- List是一个接口,AbstractList是一个抽象类,ArrayList是继承自AbstractList。
- 集合和线程安全
- Vector比ArrayList多了同步机制,是线程安全的。
- LinkedList因为成员方法大多数是synchronized,因此LinkedList是线程安全的,但是ArrayList不是线程安全的。
- HashTable比HashMap多了一个线程安全。
- StringBuffer是线程安全的,但是StringBuilder不是线程安全的。
- ConcurrentHashMap是高效但是线程安全的集合。因为它引入了分段锁的功能。
编程题
- 实现一个栈。
输入:
add aaa
add bbb
get
delete
add ccc
get
输出:
bbb
ccc - 实现一个栈。输入是树的节点,输出这个树的前序遍历
输入:A B C D # F G H
输出:ABDHCFG
大概思路:实现一个Node类,里面有index和value分别记录这个节点的位置和值。实现一个栈。先把第一个节点(0,A)压入栈,循环,当栈不空的时候,把栈顶的值取出,判断这个节点的右节点是否存在,存在则压入栈中,同理,把左节点压入栈中。重复上述过程,直到栈空。 - 加密,只有5个字符,1替换成4,2替换成1,3替换成2,4替换成3,5替换成5。不能用if和switch语句。初步思路:用HashMap.put()