郎新在线面试

这是一篇关于Java基础面试题目的总结,涵盖了单选题、填空题和问答题。题目涉及Java语法、构造函数、输入输出流、线程、抽象类、正则表达式、数据库索引、Ajax技术、HashMap与Hashtable的区别、线程同步以及异常处理等多个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

都是很基础的题

单选

  1. 下面哪个类声明是正确的

1583826419307D

1583826543338

B

java的finally块会在return之前执行,无论是否抛出异常且一定执行.

  1. 下面关于构造函数的说法不正确的是

1583826648478

B

  1. 下面哪条语句是用来创建 InputStream并且读 “file.txt”

1583827140427

B

try( InputStream inputstream = new FileInputStream("file.txt") ) {

    int data = inputstream.read();
    while(data != -1){
        data = inputstream.read();
    }
}

我选错了

  1. 执行 a=0;c=0 do{ --c a=a-1;}while(a>0); 后c的值

1583827629705

C

  1. 关于抽象类,下列说法正确的是

1583827774913

C

  1. 正则

1583827842319

B

\d表示数字,排除 A C

^匹配开头

$匹配结尾

D选项 对于 slkfjd23213232lsfjd这样也是可以通过的,不符合

  1. java 中,负责对字节代码解释执行的是()

1583828304218

B

java中负责对字节代码解释执行的是虚拟机,虚拟机将得到的字节代码进行编码运行。

  1. 在java中,下列不能派生出子类的是()

1583828370121

D

final 修饰的不可被继承

  1. 下列哪一项,可以让线程开始运行的正确代码

1583828436879

1583828428651

B

线程运行有两种:继承Thread,重写run() ; 实现Runable接口

  1. 下面关于白盒测试正确的是

1583828710521

A

  1. 进程的基本状态

1583828789477

D

1)就绪状态(Ready):进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行.就绪进程可以按多个优先级来划分队列.例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列.

2)运行状态(Running):进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目.在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程.

3)阻塞状态(Blocked):由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行.该事件发生前即使把处理机分配给该进程,也无法运行.

  1. 关于索引的使用,下列说法中不确的是()

1583828876213

D

使用 通配符 %会导致索引失效

对于组合索引 :至少要包含组合索引的第一列(即如果索引建立在多个列上,只有它的第一个列被where子句引用时,优化器才会使用该索引)

以下几种情况索引不会被使用

1、不等于操作不能用于索引

2、经过普通或者函数运算的索引列不能使用索引

3、含前向模糊查询(通配符%在搜索词首出现),比如“like %王xx”【反向键索引:reverse】

4、索引列为空,或包含空值

5、数值比较时左右类型不同,相当于做了隐式类型转换

6、给索引查询的值是未知字段,而不是已知数

14.当客户端关闭一个从连接池中获取的连接,会发生下面哪一种情况?

1583829578813

A

  1. 想要在视图上成功的执行查询需要做什么?

1583829844493

填空

  1. Math.round(-11.5) =

1583829893835

-11

ceil(x):向上取整;

floor(x):向下取整;

rint(x):取最接近的整数,如果距离相等,则取偶数;例:rint(2.5)取整 为2.0

round(x):如果是单精度:返回(int)Math.floor(x+0.5)

                    如果是双精度:返回(long)Math.floor(x+0.5)

                    例如:Math.round(2.6f)3return int

                             Math.round(2.6)取3,ruturn long

abs(x):返回一个数(intlongfloatdouble)的绝对值
  1. java 语言中 protected作用域访问权限包括

1583830697139

修饰符		当前类		同 包		子 类		其他包
public		√	     √	     √	      √
protected	√	     √	     √	      ×
default		√	     √	     ×	      ×
private		√	     ×	     ×	      ×

  1. Ajax 技术中,实现其功能的关键对象是

1583830837552

AJAX技术的核心是XMLHttpRequest对象的使用。

  1. java代码String a = "hello"; System.out.println(a.compareTo("hello"));输出结果是

1583830952303

0

返回参与比较的前后两个字符串的asc码的差值,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值

  1. ___类似于 HashMap,但是不允许 null键 和 null 值。它也比 HashMap慢,因为它是同步的

1583831199768

Hashtable

HashMap 和 Hashtable 区别

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许,还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue(Returns true if this map maps one or more keys to the specified value)和containsKey(Returns true if this map contains a mapping for the specified key)。因为contains(Tests if some key maps into the specified value in this hashtable)方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

问答题

  1. 甲乙丙丁戊5人各借了一本小说,约定读完后相互交换.这5本书的厚度和他们的阅读速度差不多,因此5人总是同时换书.经过数次交换后,5人每人都读完了这5本书

1583831372015

https://www.zybang.com/question/6a2fa488424fbfc71ecd60bc0fdc2a82.html

  1. 以下SQL文件执行效率比较低 ,请将其修改以提高其执行效率

1583831527793

表连接替换EXISTS

表连接比EXISTS效率更高

#优化后

select ename from emp e 
join dept d on d.dept_no=e.dept_no
where d.dept_cat='A';
  1. java 中常用的两种线程同步wait() 和 sleep() 有什么区别?

1583831926394

1、每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行(注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!!);wait()方法则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了notify()方法,之前调用wait()的线程才会解除wait状态,可以去参与竞争同步资源锁,进而得到执行。(注意:notify的作用相当于叫醒睡着的人,而并不会给他分配任务,就是说notify只是让之前调用wait的线程有权利重新参与线程的调度);

2、sleep()方法可以在任何地方使用;wait()方法则只能在同步方法或同步块中使用;

3、sleep()是线程线程类(Thread)的方法,调用会暂停此线程指定的时间,但监控依然保持,不会释放对象锁,到时间自动恢复;wait()是Object的方法,调用会放弃对象锁,进入等待队列,待调用notify()/notifyAll()唤醒指定的线程或者所有线程,才会进入锁池,不再次获得对象锁才会进入运行状态;

  1. 异常捕获的问题

1583832126380

我自己是这么写的

1583832235823

  1. 冒泡

1583832260374

https://blog.youkuaiyun.com/bajianxiaofendui/article/details/83011314

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值