面试中java高编问题

13 篇文章 0 订阅

面试中java高编问题

 



本文将罗列几个面试中会遇到的java高编知识中的典型问题。并作一些解释和回答方向的指导。


这不是我想出来的问题,而是一位java面试招聘主管总结的几道问题,

我只是思考之后把我的答案和网上的参考思路给大家,便于大家理解。


大家最好思考后再看参考答案。

 

 

一.面试问题


(一)前台后台都做吗? (10分)


(二)事务,什么是事务,为何用事务 (10分)


(三)两个项目之间如何通信(20分)


(四)在上个问题基础之上问,碰到乱码怎么解决,utf-8和gbk可以直接转换么(10分)


(五)java中会存在内存泄漏吗,请简单描述。(10分)


(六)同步方法和同步块,哪个是更好的选择?(10分)


(七)Java集合框架的基础接口有哪些?(10分)


(八)简述一项技术或设计模式的原理(20分)


 

上面都是一些描述性问题,是面试现场阐述的,如果能回答一些例子,基本上是一半分数,

如果是回答原理并且逻辑清楚可以得满分,如果回答不出来就是没有分数。

能达到60分才考虑人事面试,否则直接拒绝。


你也可以看看你自己思考能得到多少分。

 

 

二.回答思路

 

上面的问题都是比较要有思路才能回答出来的。这也是要求我们在开发过程多注重程序的原理和具体效果。

而且要求对各个知识点比较熟悉,比如问到事务就要想到数据库;问到通信就要想到网络编程。

这就要我们对知识点不断回顾。

 



(一)前台后台都做吗? 


问题分析:

这一般是面试的第一个问题,超过90%的人会回答:"都做,后台多一点,前台少一点"
这不是面试官想要的答案,鬼都知道程序员都要多少涉及一下前台,后台更不用说了.


聪明人的回答: 前台js写的比较熟练,html的框架模板也能搭建的非常整齐美观,只是特效能力比较差。

前面很长一段时间还是以后台开发为主。


这个问题面试官,也不会和你扯太多,就是看看你的技术多面性而已。




 
(二)事务,什么是事务,为何用事务 ?


问题分析:

前提是你必须了解过事务,数据库里面的知识。

大部分面试者,就会举各种各样的例子(比如银行存钱,这个最多)来说明这个问题,其实他们都简单理解到了.
但这不是面试官想要的答案。


面试官期望的答案只有一句:"保证数据的一致性和完整性" 。

可惜只有5%左右的人答出来了,这个问题可以大概了解出面试者的分析能力,以及语言总结能力,还有他们对这个玩意的理解程度。
 




 
(三)两个项目之间如何通信?


问题分析:

很基础的问题,答上来就有分,说明你接触或者了解过网络。
你可以这样回答:


可以通过可以通过Http协议或通过Socket接口下的TCP或DUP协议,(选择你比较熟悉的方式,比如我选择TCP协议,)TCP协议相对来说传输数据完整性比较好,可以通过Socket接口在服务器端设置端口号,

在客户端添加服务器的端口号和服务器的IP地址,通过Socket对象的getInputStream和getOutStream获取输入流

和输出流来对信息的读取和写入,实现项目的交互通信。

 



(四)在上个问题基础之上问,碰到乱码怎么解决,utf-8和gbk可以直接转换么 ?

 


问题分析:

这是一个实际问题,一般开发经验比较丰富的开发者才能比较圆满的回答,

后面还要说一下utf-8和gbk,一个是国际标准编码,一个是国家标准编码,不能转换。

大部分应聘者到这里基本就开始胡扯了. 有说声明字符串编码接收的,有说改项目编码的,各种各样五花八门.

更有甚者,utf-8和gbk可以直接转换...直接说明了他们完全没有遇到过此类问题,也并不了解编码. 


比较好的回答是:

乱码问题肯定是编解码不一致导致的,所以一般把解码方式换成编码方式就可以了,

也可以把编码方式和解码方式都换成utf-8;至于GBK和UTF-8是两种完全不同的编码,

GBK是中文的编码,而UTF-8是国际编码,不能转换。

 

 



(五)java中会存在内存泄漏吗,请简单描述。

 

问题分析:

内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。内存泄露可以理解成内存浪费。存在内存泄露的2种情况:

1.长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露。例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局map对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

2.如果一个外部类的实例对象的方法返回了一个内部类的实例对象,这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持久外部类的实例对象,这个外部类对象将不会被垃圾回收,这也会造成内存泄露。

还要知道一点的就是:严重的内存泄露会造成内存溢出。

 

你的回答可以是:

java会发生内存泄露,比如创建多个对象放在HashMap里面,这时对象不能被回收,有些对象不再用时,

会发生泄露;还有创建内部类后指向某一个地址,它的外部类也不能回收,也会造成内存泄露。

 




(六)同步方法和同步块,哪个是更好的选择?


问题分析:

线程知识的考察,线程安全。


参考答案:

同步块是更好的选择,因为它不会锁住整个对象(当然你也可以让它锁住整个对象)。

同步方法会锁住整个对象,哪怕这个类中有多个不相关联的同步块,

这通常会导致他们停止执行并需要等待获得这个对象上的锁。







(七)Java集合框架的基础接口有哪些?


问题分析:集合知识点的简单考察。  说一下各自的定义和相互之间的联系和区别。 

Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。

Java平台不提供这个接口任何直接的实现。

    Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。

    List是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。

    Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。


你的回答可以是:

集合框架常见的基本接口有Collection、Set、List、Map,其中Set和List是Collection的子接口,

刚才说的基本接口都是不能直接实例化,只能通过它们的子类来实例化,调用相关接口的方法。

首先Set接口是一个不能存放重复元素的集合,而List是最常用的集合,可以存放重复的元素,

想数组一样根据游标来获取相应的数据,还有一个Map接口,是键值对的形式类存放数据,

根据唯一的Key来获取相应的Value。

 


(八)简述一项技术或设计模式的原理 。


问题分析:

这个几乎是送分的,但90%的人答不出. 

但是这题也是那些学能力比较强,java思想有一定了解的人才能回答得出来。对java设计模式有一点的学习。这也需要我们开发人员在开发中不断的进行总结和探索。

Java技术有:Web Service技术, JDBC ,JDO, JavaMail ,Transactions

简单的java设计模式:单例模式,工厂模式

 

参考答案:

Java设计模式的话,之前有一点的学习,比如工厂模式有简单工厂模式、工厂方法模式、抽象工厂模式,

说一下简单工厂模式和工厂方法模式:使用了简单工厂模式后,我们的程序,更加符合现实中的情况;

比如拿一个简单的顾客消费产品的例子来说,在简单工厂模式中,客户端可以免除了直接创建产品对象的责任,

直接调用消费的方法,负责“消费”产品就可以了,也是比较符合java思想封装性的原则。

但是简单工厂也是有一定的局限性的,比如消费者每消费一样东西,

都要在工厂类中增加相应的业务逻辑或者判断逻辑,这显然是违背开闭原则的。工厂类是很被动的。

而工厂方法模式能有效弥补这个缺陷,就是创建一个抽象工厂类,多个具体工厂类继承该抽象工厂类,

顾客每次消费只需要对具体工厂类进行判断,或修改或创建新的具体工厂类,

而原来的其他工厂类完全不需要改变。这就是简单工厂类的思想了。

 

 


以上就是java面试中会遇到的面试题,答案也可以是其他的,只要回答全面一点就行。


上面的问题相对初级开发者可能会觉得比较困难,但是这也是我们程序员要慢慢去强化自己的方向,

对于一些思想的理解还是要经常去想去记去研究一下。否则你凭什么去比别人优秀,凭什么拿高工资。



无论是java开发还是Android开发,对java这些比较基础而且经典的问题还是要理解,会回答

无论是java面试还是Android面试肯定会被问到上面的某一些问题或相似的问题,

必要的时候要记一下,背一下。

瞬间提升一下自己的逼格!

 


  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值