笔试ledao

JAVA 部分

  1. equals()方法是用来干嘛的?它和有什么不同?重载equals的时候一般还会重载哪个函数,为什么
    答:(1)equals()方法是Object的方法,通过覆盖该方法可以判断两个对象是否相等。
    (2)
    是用来判断基本类型的值是否相等或判断对象的地址是否相等。
    (3)重载equals时候还会重载hashcode,可能出现两个对象“相等”,但是hashcode不一样导致不相等的情况。
    比如,往set里加入10个自定义类,自定义类重载了equals方法,未重载hashcode,则它的大小就为10,如果hashcode重载后就为1。
  2. try{}里面有个return语句,那这个try后面的finally{}里的代码会不会执行,什么时候执行,在return前还是后。
    答:会执行,是在return前执行
    为什么呢?因为在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。在转去之前,try中先把要返回的结果存在不同于x的局部变量中去,执行完finally后,再从中取出返回结果,因此,即使finally中对变量x进行了改变,但是不会影响返回结果(他应该使用栈保存返回值)
public int test();
    Code:
       0: iconst_1			//将位置为1的元素放到操作栈上
       1: istore_1			//将位置为1的元素存到局部变量表
       2: iload_1			//从局部变量表加载位置1的元素
       3: istore_2			//从位置为2的元素存到局部变量表
       4: iinc      1, 1  //把一个常量值1加到一个局部变量1上
       7: iload_2			//从局部变量2中装载int类型的值
       8: ireturn			//从方法中返回一个int
       9: astore_3		//将引用类型存入局部变量表3的位置
      10: iinc          1, 1  //把一个常量值1加到一个局部变量1上
      13: aload_3			//从局部变量表3中装载引用类型值
      14: athrow
    Exception table:
       from    to  target type
           2     4     9   any
           9    10     9   any

  1. foreach 时List.remove(i)会引发ConcurrentModificationException
    原因:实现了Iterator接口,使用了next()方法,
    执行list.remove(item);对list对象的modCount值进行了修改,而list对象的迭代器的exceptedModCount值未进行修改,因此抛出
    ConcurrentModificationException异常。
    使用iterator.remove(item);保证安全

  2. String和StirngBuffer的区别
    答:String
    (1)是不可变对象,一旦创建就不能修改值。
    (2)String是final类,不能继承;
    (3)对String的操作都是改变赋值地址。
    StringBuffer
    (1) 是一个可变对象;
    (2) 它只能通过构造函数来建立;
    (3) 对象被建立后就会分配内存空间,初始保存一个null,通过它的append方法向其赋值。
    (4) 线程安全的。

  3. 简要说明final的作用。用反射能修改final变量吗?

  4. final修饰的类不可被继承

  5. final修饰的方法不能被重写

  6. final修饰的变量不能被修改,不能修改变量的引用,内容可以改变。
    用反射修改final变量分两种情况:
    1).final修饰的成员变量在定义时初始化了值,那么修改不了。
    2).final修饰的成员变量在定义时没有初始化值,可以动态修改

  7. 简述下Executor最主要的几个接口,以及如何使用。
    Executor主要是两个接口ScheduledExecutorService和ExecutorService
    在这里插入图片描述
    ExecutorService是一个接口,提供了管理终止线程的方法,及跟踪一个或多个异步任务执行状况而生成Future的方法。
    三个实现类:AbstractExecutorService,
    ScheduledThreadPoolExecutor,ThreadPoolExecutor
    ScheduledExecutorService是线程池,对多个任务实现了循环和延时任务。内部使用了延迟队列,基于等待/唤醒机制实现。

  8. 用ReentrantLock和Condition写一个线程安全的队列,队列的元素都是Integer(泛型更好),队列长度有限,加新元素时如果超过上限则阻塞。
    在这里插入图片描述

  9. 什么是内部类,java支持几种内部类,内部类的好处和作用是什么
    内部类:在一个类内部进行其他类结构的嵌套操作。
    Java支持成员内部类,静态内部类,方法内部类,匿名内部类。
    成员内部类:成员内部类不能定义静态成员和方法。
    静态内部类:使用static修饰的内部类为静态内部类。
    方法内部类:定义在方法里的内部类
    匿名内部类:没有名字的方法内部类。
    内部类好处:
    1).内部类和外部类可以方便的访问彼此的私有域(包括私有方法、私有属性)
    2).内部类是一种封装,对外部的其他类隐藏
    3).内部类可以实现java单继承局限

  10. 列举或描述JDK中的设计模式,例如IO包,Net包
    IO包使用了适配器模式,装饰器模式。

  1. 适配器是指:将一个类的接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。
    ByteArrayInputStream 继承了 InputStream 接口,而内部封装了一个 byte 数组,它将 byte 数组接口适配成 InputStream 流处理器接口。
    FileInputStream 继承了 InputStream 接口,而内部有 FileDescriptor对象的引用,它将 FileDescriptor 的接口适配成 InputStream 流处理器接口。

  2. 装饰器模式:动态给一个对象添加一些额外的职责
    InputStream input = new DataInputStream(new BufferedInputStream(new FileInputStream(“C:/test.txt”)));
    在这里插入图片描述

  1. Java中有几个ClassLoader?简述ClassLoader的体系结构。简单描述OSGi(Open Service GateWay Initiative)规范和框架
    1)
    Bootstrp Classloader 加载jre/lib/.jar
    Extension ClassLoader 加载jre/lib/ext/
    .lib
    App ClassLoader 加载classpath中指定的jar
    Custom ClassLoader 通过继承java.lang.ClassLoader自定义加载class
    在这里插入图片描述
    2)OSGi是java上的动态模块系统。
    可以动态加载,更新和卸载模块而不用停止服务
    实现系统的模块化、版本化,允许多版本bundule同时服务
    Service model允许模块/插件相互依赖但松耦合,分享服务更简单

数据库:

  1. 简述一下ACID
    Atomicity 原子性 指事务是一个不可分割的单位
    Consistency 一致性 事务前后数据的完整性必须保持一致
    Isolation 隔离性 多个用户访问数据库时为每个用户开启事务,不能被其他事物的操作数据干扰,多个并发事务之间相互隔离。
    Durability 持久性是指一个事务一旦被提交,它对数据库的改变就是永久的。

  2. 简述下Btree结构,不考虑key重复,或简述下二叉排序树的结构
    二叉排序树结构
    (1)左子树小于等于根节点的值
    (2)右子树大于等于根节点值
    (3)左右子树叶为二叉排序树

  3. 存储过程有一种隔离度是可串行化的,简述它的语义。

Linux部分

  1. 查看文件系统剩余空间的命令是 df –hl
  2. 列出当前目录下所有文件的命令(每个文件一行,只要文件名,不要其他字段) ls -l|grep -v ^d|grep -v ‘total’|awk ‘{print $9}’
    3.用perl或者sed或者awk或者其他脚本语言,把data.txt中的所有ip替换为127.0.0.1
    sed -i ‘s/[0-9].[0-9].[0-9].[0-9]/127.0.0.1/g’ b.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值