java面试部分题目

java面试题

在应聘java开发的面试中,面试官会提些容易混淆或不容易理解的问题来考察应聘者的能力,以下是我整理的部分常见试题:

  • java中是否有Goto类型
  • java中是否有指针
  • equals与==区别
  • String,StringBuilder,StringBuffer三者的区别
  • 如果try中使用return,finally会不会得到执行?
  • 受检异常与非受检异常的区别
  • sleep和wait的区别
  • MySql如何优化

java中是否有Goto

goto语句作为java的保留字段,但是没有实际的应用的。goto语句实际上是C语言的范畴,用来定义指针跳转用的,java中通过”类名.方法“的形式进行的方法调用,不在用goto语句进行实现,这个是java的特点。

java中是否有指针

学过c/c++再学Java的人往往心中有这样的纠结,java中到底有没有指针?
如果一定要在是或否里选择一个,OK,java中没有指针。
Java中的引用与C++中的引用是不同的,并且Java中的引用更像C++中的指针。因此,可以认为Java中的引用就是指针,是一种限制的指针,不能参与整数运行和指向任意位置的内存,并且不用显示回收对象。

equals与==区别

equals是Object类中声明的方法。在Object类中,equals与==是完全等价的。
因为Object中的equals就是使用==来判断的。但是,Object中的equals比较
方式过于严格,子类可以实现自己的比较方式(重写equals方法)。例如:
String重写了equals方法,只要两个String对象的字符序列相等,则认为两
个String就是相等的。
equals比较两个字符序列是否相等,==比较引用变量的值,即起始地址是否
相等,是否是同一个对象。

String,StringBuilder,StringBuffer三者的区别

String对象是不可以改变的,对String对象进行的一切操作,都是在新创建
的对象上进行,原有的String对象没有改变。StringBuilder和StringBuffer
是可以改变的。对StringBuilder进行的操作都是在原有对象上进行,而没有
创建新的对象。
当需要多线程共享时,我们应该使用String对象,当频繁对字符序列进行修改时,
应该使用StringBuilder。
StringBuilder是非线程安全的,StringBuffer是线程安全的。

如果try中使用return,finally会不会得到执行?

try中使用return,finally还是会得到执行的,它会在try的return之前得到
执行的,如果finally也有return,那finally中的return会镇压掉try中的return。

为什么要抛出异常?

有些错误及早发现比没有要好,这是个逻辑问题,显式地产生一个异常,这个异常
如果没有被客户端调用处理,异常就能马上在控制台显示,当前的进程就会马上得
到终止,我们就会马上发现这个问题,并快速地解决问题。如果不产生异常,就算
客户端输入一个不符合要求的值,我们也不能发现,程序还是照常运行,很可能会
把已知的BUG掩埋起来。

受检异常与非受检异常的区别

受检异常要求程序员在编译期间就要进行明确的处理,非受检异常则不用。

sleep()和wait()的区别

对于sleep()方法,我们首先要知道该方法是属于Thread类。而wait()方法,则是属于Object类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备,获取对象锁进入运行状态。

MySql如何优化

大批量的插入数据

当用load导入数据,适当的设置可以提供导入的速度
对于MyISAM存储引擎的表,可以通过以下方式快速导入大量的数据

优化insert语句

1.如果同时从一个客户端插入很多行,应尽量使用多个值表的insert语句,这种方式将大大缩减客户端与数据库之间的连接、关闭等消耗,使得效率比分开执行的单个insert语句快

2.如果从不同客户插入很多行,可以通过使用insert delayed语句提高更高的速度,delayed的含义是让insert语句马上执行,其实数据都被放到内存的队列中,并没有真正写入磁盘,这比每条语句分别插入要快的多;

3.LOW_PRIORITY刚好相反,在所有其他用户对表的读写完成后才可以进行

4.将索引文件和数据文件分在不同的磁盘上存放(利用建表中的选项)

5.如果进行批量插入,可以通过增加bulk_insert_buffer_size变量值的方法来通过速度,但是,这只能对MyISAM表使用。

6.当从一个文本文件装载一个表时,使用LOAD DATA INFILE。这通常比使用很多INSERT语句块快20倍

优化ORDER BY语句

优化GROUP BY语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值