动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Java就业面试题大全(附答案)

09-01 17:20 90浏览
举报 T字号
  • 大字
  • 中字
  • 小字

想要就业的第一步就是面试,在java面试中,会以面试题的形式来考察java程序员岗位面试者的基本功是否扎实,所以java就业面试题是大家在面试前必须要准备的资料。下面整理了一些常考的java就业面试题,有面试需要的小伙伴们赶紧拿好这份资料学习起来吧!

1、语言层次的安全性主要体现在哪里?

答:Java取消了强大但又危险的指针,而代之以引用。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。

垃圾回收机制:不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃。

异常处理机制:Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。

强制类型转换:只有在满足强制转换规则的情况下才能强转成功。

2、用最有效率的方法算出2乘以8等于多少?

答:使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。对于位运算符“<<”, 是将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,位运算cpu直接支持的,效率最高。所以,2乘以8等于几的最效率的方法是2 << 3。

3、if多分支语句和switch多分支语句的异同是什么?

答:相同之处:都是分支语句,多超过一种的情况进行判断处理。

不同之处:switch更适合用于多分支情况,就是有很多种情况需要判断处理,判断条件类型单一,只有一个入口,在分支执行完后(如果没有break跳出),不加判断地执行下去;而if—elseif---else多分枝主要适用于分支较少的分支结构,判断类型不是单一,只要一个分支被执行后,后边的分支不再执行。switch为等值判断(不允许比如>= <=),而if为等值和区间都可以,if的使用范围大。

4、while和do-while循环的区别?

答:while先判断后执行,第一次判断为false,循环体一次都不执行;do while先执行后判断,最少执行1次;如果while循环第一次判断为true, 则两种循环没有区别。

5、break和continue的作用?

答:break:结束当前循环并退出当前循环体,break还可以退出switch语句;

continue: 循环体中后续的语句不执行,但是循环没有结束,继续进行循环条件的判断(for循环还会i++)。continue只是结束本次循环。

6、递归的定义和优缺点?

答:递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

递归算法解决问题的特点:(1)递归就是在过程或函数里调用自身;(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口;(3)递归算法解题通常显得很简洁,但运行效率较低。所以一般不提倡用递归算法设计程序;(4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

7、乐观锁与悲观锁各自是什么?

答:悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。

两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

8、在多线程编程里,wait方法的调用方式是怎样的?

:wait方法是线程通信的方法之一,必须用在 synchronized方法或者synchronized代码块中,否则会抛出异常,这就涉及到一个“锁”的概念,而wait方法必须使用上锁的对象来调用,从而持有该对象的锁进入线程等待状态,直到使用该上锁的对象调用notify或者notifyAll方法来唤醒之前进入等待的线程,以释放持有的锁。

9、Java线程中,sleep()和wait()区别?

答:sleep是线程类(Thread)的方法;作用是导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复;调用sleep()不会释放对象锁。

wait是Object类的方法;对此对象调用wait方法导致本线程放弃对象锁,进入等 待此对象的等待锁定池。只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池,准备获得对象锁进行运行状态。

10、当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法?

答:不能。其它线程只能访问该对象的非同步方法,同步方法则不能进入。 只有等待当前线程执行完毕释放锁资源之后,其他线程才有可能进行执行该同步方法。延伸对象锁分为三种:共享资源、this、当前类的字节码文件对象。

11、Java类库中,将信息写入内存的类是(B)

A. Java.io.FileOutputStream

B. java.ByteArrayOutputStream

C. java.io.BufferedOutputStream

D. java,.io.DataOutputStream

分析:ACD都是io到文件

12、下面哪个流是面向字符的输入流(D)

A. BufferedWriter

B. FileInputStream

C. ObjectInputStream

D. InputStreamReader

分析:以InputStream(输入流)/OutputStream(输出流)为后缀的是字节流;以Reader(输入流)/Writer(输出流)为后缀的是字符流。

13、TCP协议和UDP协议的区别是什么?

TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用IP路由功能把数据包发送到目的地,从而为应用程序及应用层协议(包括:HTTP、SMTP、SNMP、FTP和Telnet)提供网络服务。

TCP的server和client之间通信就好比两个人打电话,需要互相知道对方的电话号码,然后开始对话。所以在两者的连接过程中间需要指定端口和地址。

UDP的server和client之间的通信就像两个人互相发信。我只需要知道对方的地址,然后就发信过去。对方是否收到我不知道,也不需要专门对口令似的来建立连接。具体区别如下:(1)TCP是面向连接的传输。UDP是无连接的传输;(2)TCP有流量控制、拥塞控制,检验数据数据按序到达,而UDP则相反;(3)TCP的路由选择只发生在建立连接的时候,而UDP的每个报文都要进行路由选择;(4)TCP是可靠性传输,他的可靠性是由超时重发机制实现的,而UDP则是不可靠传输;(5)UDP因为少了很多控制信息,所以传输速度比TCP速度快;(6)TCP适合用于传输大量数据,UDP适合用于传输小量数据。

14、WEB应用中如果有.class和.jar类型的文件一般分别应该放在什么位置?

:.class文件放在WEB-INF/classes文件下,.jar文件放在WEB-INF/lib文件夹下。

15、HTMLCSSJavascript在Web开发中分别起什么作用?

答:(1)HTML是用来描述网页的一种语言;(2)CSS(层叠样式表 Cascading Style Sheets),样式定义如何显示HTML元素,语法为:selector {property:value} (选择符 {属性:值});(3)JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。

16、char型变量中能不能存储一个中文汉字?

答:(1)java采用unicode编码,2个字节(16位)来表示一个字符, 无论是汉字还是数字,字母,或其他语言都可以存储;(2)char在java中是2个字节,所以可以存储中文。

17、在项目中哪些地方用到了XML

答: XML的主要作用有两个方面:数据交换(曾经被称为业界数据交换的事实标准,现在此项功能在很多时候都被JSON取代)和信息配置。在做数据交换时,XML将数据用标签组装成起来,然后压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再从XML文件中还原相关信息进行处理。目前很多软件都使用XML来存储配置信息,很多项目中我们通常也会将作为配置的硬代码(hard code)写在XML文件中,Java的很多框架也是这么做的。

18、如何设定JQuery异步调用还是同步调用?

答案:调用jQuery中的ajax函数,设置其async属性来表明是异步还是同步,如下:

$.ajax({

async:true//表示异步,false表示同步

})

19、简述Java内存管理机制,以及垃圾回收的原理和使用过Java调优工具?

答:内存管理的职责为分配内存,回收内存。没有自动内存管理的语言/平台容易发生错误。

典型的问题包括悬挂指针问题,一个指针引用了一个已经被回收的内存地址,导致程序的运行完全不可知。

另一个典型问题为内存泄露,内存已经分配,但是已经没有了指向该内存的指针,导致内存泄露。 程序员要花费大量时间在调试该类问题上。

20、GC线程是否为守护线程?

答:GC线程是守护线程。线程分为守护线程和非守护线程(即用户线程)。只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。

上面整理的java就业面试题包括java语法、异常处理、多线程及web相关等一系列的知识点,20java就业面试题大家可以一道题一道题的学习也可以作为自测题来查漏补缺,哪块内容还有欠缺,就及时通过查阅书籍和看java培训课程的方式来学习相对薄弱的地方,希望大家最后都顺利的通过面试,成功就业。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵1136
程序员代码小兵1136

6篇文章贡献28501字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

五分钟读懂UML类图

江湖人称小李白12-10 10:41

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消