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倍

404

被折叠的 条评论
为什么被折叠?



