你知道为什么考你这个?——Java面试题及答案汇总分析(1)

本文试图通过对面试常见试题的解答,分析每个题目背后经理人试图考察面试者的深层内容,希望可以给各位职场人带来一些帮助。如果您仅仅是为了应付面试,建议您不要阅读本文,本文作者更希望本文可以给那些时常为了在工作中虚度了很多时光而懊悔不已,却又不知道该如何入手的人指明些许方向。

现今职场上,多少IT人都是做事做事做事,可是,做事之余,我们是否想过,我们应该学习些什么。通过对面试题目的分析,我们希望可以找到:经理人需要我们掌握些什么,而作为一个求职者,我们又应该掌握些什么!

 

题目一:Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。

参考答案:

Java基本类型:整型有byteshortintlong;浮点型有floatdouble,字符型有char,布尔型有boolean

String不是基本类型,是对象类型。

基本类型与对象类型的区别是:基本类型的值就是一个数字、一个字符或者一个布尔值,而对象类型的值则是指向内存空间的一个引用,是一个地址,所指向内存中保存着变量所表示的一个值或者一组值。

分析:

此题目知识点纯粹为Java基础知识,最基本的东西。但是考察目的是不是如此简单呢?笔者认为,简单的如此一道题,可以考察如下内容:

如果,你是一名即将毕业或者毕业不久的学生,在面试中遇到了这道题。那么,很简单,面试官考察的就是你基础知识的掌握情况。答对了,不会加分,但是,答错了,绝对要减分的,而且要双倍的减。为什么?这个还用问吗,你是要拿java当吃饭的家什的,你连最基本的数据类型理论知识都没掌握就想进这一行?学生最大的优势是什么,理论知识,你连最基本的理论知识都没掌握,只能说明你学习的态度有问题。一个学生,学习态度有问题,他作为一个工作者的时候,工作态度会不会有问题呢。一个工作态度有问题的人,招聘者敢要吗?好了,到这,如果你看到这道题目的时候如果你迷惑过,不知道该如何回答,知道自己该干嘛了吗?回去拼命把基础理论知识学扎实了吧。

如果,你是一名有多年工作经验的应聘者,看到这道题目时,不要疑惑,如果不会答,也不要紧张,记得多少写多少。对于你来说,这道题目考察的不是基础知识,而是考验你为面试做了多少准备,换句话说,是你对于面试的态度。这道题目,答对了,不会加分,但是如果答的太完美,就要减分了;答错了,不会减分,但是如果真是一点都不会,就要减分了。为什么这么说?试想想,如果你是面试官,你要招聘一名有工作经验的员工,这些基础知识的掌握情况能说明一个人的工作经验吗,很明显,不能。但是,为什么要考这个题目?面试官想验证你是不是传说中的“面霸”。一个整天忙碌于工作的人,会把这道题目回答的很完美吗?不要问我,问问自己,你如果没提前特意背过这道题目,你会回答什么样子?当然,如果说,你对这道题目一点都回答不上来,那还是多读读书吧。

 

题目二:字符串的操作:

写一个方法,实现字符串的反转,如:输入abc,输出cba

写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc

参考答案:

 

public class Tool{

    public static void main(String[] args){

       try {

           String input = "0123456789";

           System.out.println(Tool.reverse(input));

           System.out.println(Tool.replace(input,3,5,"abc"));

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

    /**

     * 反转输入字符串

     * @param input 将要反转的字符串

     * @return 反转后的字符串

     */

    public static String reverse(String input){

       int length = input.length();

       StringBuffer sb = new StringBuffer(length);

       for(int i = length - 1; i >= 0 ; i--){

           sb.append(input.charAt(i));

       }

       return sb.toString();

    }

    /**

     * 用指定字符串替换原字符串中的指定位置的子串

     * @param source 原字符串

     * @param bIndex 被替换子串的开始位置

     * @param eIndex 被替换子串的结束位置

     * @param target 将替换成的字符串

     * @return 替换后的字符串

     * @throws Exception

     */

    public static String replace(String source,

int bIndex, int eIndex, String target) throws Exception{

       StringBuffer result

= new StringBuffer(source.substring(0, bIndex-1));

       result.append(target);

       result.append(source.substring(eIndex));

       return result.toString();

    }

}

分析:

此两题目通过对字符串的操作考查答题者的分析能力和编程能力。

题目一,题目内容比较简单,就是写一个方法实现字符串的反转,但是题目二,理解起来就有些模糊,具笔者统计,光网上对此题目的理解就千差万别,有简单理解为一个调用String.replace()就可以,也有很复杂的将从键盘输入到替换全流程的编程。

本题中,笔者只是从出题者的角度分析,按照自己的理解,给出一个参考答案,但是,个人认为,这个答案已经可以让出题者从想要考查的角度考察应试者了。

首先,应试者的编码风格,包括变量命名,代码排版,代码注释等,其次,简单API的应用,主要是StringStringBuffer的,然后是字符串的志标,最后,还有异常的扑捉和处理,以及代码的性能。

总之,通过以上代码,答题者可以让面试官知道,自己的分析能力和编码能力。最后,说一句,如果,作为应聘者,你对这个题目,达不到上面代码的水平,那你就得再编码方面努努力了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值