笔试错题记录6

选择题

  1. 关于java中的构造函数
    • 构造函数必须与类同名。
    • 构造函数没有返回值。
    • 构造函数在使用new操作时进行。
    • 但是有一点要注意,方法名可以与类名同名,编译可以通过,也可以正常运行
  2. 关于非关系型数据库
    • 非关系型数据库主要有四种存储类型。键值对存储,文档存储,基于列的数据库,图形数据库。
    • 非关系型数据库库的优点:因为是键值对,所以性能较高。可扩展性同样基于键值对,数据之间没哟耦合性。
    • 关系型数据库的优点:事务支持使得对于安全性能很高的数据访问要求得以实现。能够保持数据的一致性。
    • 非关系型数据库有:临时性键值存储(mamcached,Redis),永久性键值存储(Redis,ROMA),面向文档的数据库(MongoDB),面向列的数据库(HBsae,Cassandra)。
  3. socket函数中产生阻塞的有
    • accept(): 服务器端等待客户的连接,直到接到客户端连接,才从accept()方法返回。
    • socket的输入流读入数据时,如果输入流没有足够数据,就会产生阻塞。
    • socket的输出流写一批数据的时候,可能会进入阻塞状态,等到输出了所有数据或者出现异常才返回。
    • connect():客户端等待服务器端连接,会进入阻塞状态,直到连接成功。
  4. 设置JVM内存
    • -Xmx :Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
    • -Xms :Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
    • -Xmn :Java Heap Young区大小,不熟悉最好保留默认值;
    • -Xss :每个线程的Stack大小,不熟悉最好保留默认值;
  5. java标识符:
    • 所有标识符都以字母下划线美元符号开头
    • 首字母之后可以是字母,数字,下划线,美元符号
  6. 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() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。
  7. Thread类的方法:
    • start():启动线程
    • getId():获得线程ID
    • getName():获得线程名字
    • getPriority():获得优先级
    • isAlive():判断线程是否活动
    • isDaemon():判断是否守护线程
    • getState():获得线程状态
    • sleep(long mill):休眠线程
    • join():等待线程结束
    • yield():放弃cpu使用权利
    • interrupt():中断线程
    • currentThread():获得正在执行的线程对象
  8. 关于容器间的继承
    • List是一个接口,AbstractList是一个抽象类,ArrayList是继承自AbstractList。
  9. 集合和线程安全
    • Vector比ArrayList多了同步机制,是线程安全的。
    • LinkedList因为成员方法大多数是synchronized,因此LinkedList是线程安全的,但是ArrayList不是线程安全的。
    • HashTable比HashMap多了一个线程安全。
    • StringBuffer是线程安全的,但是StringBuilder不是线程安全的。
    • ConcurrentHashMap是高效但是线程安全的集合。因为它引入了分段锁的功能。

编程题

  1. 实现一个栈。
    输入:
    add aaa
    add bbb
    get
    delete
    add ccc
    get
    输出:
    bbb
    ccc
  2. 实现一个栈。输入是树的节点,输出这个树的前序遍历
    输入:A B C D # F G H
    输出:ABDHCFG
    大概思路:实现一个Node类,里面有index和value分别记录这个节点的位置和值。实现一个栈。先把第一个节点(0,A)压入栈,循环,当栈不空的时候,把栈顶的值取出,判断这个节点的右节点是否存在,存在则压入栈中,同理,把左节点压入栈中。重复上述过程,直到栈空。
  3. 加密,只有5个字符,1替换成4,2替换成1,3替换成2,4替换成3,5替换成5。不能用if和switch语句。初步思路:用HashMap.put()

猜你喜欢

转载自blog.csdn.net/rainpasttime/article/details/82780747