关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Java中有关String问题的面试

发布时间:2020-03-10 00:00:00

   1. 序言

近期招聘面试了几个企业,感受了一下电话面试和2019年刚火起來的视频面试

尽管以前就会有一些企业会先根据电话面试的方式先评定下侯选人的工作能力水准,但仿佛很少,最少我之前的招聘面试方式100%全是当场招聘面试

招聘面试全过程中,难以避免的被问来到许多 面试问题,这篇blog就小结下招聘面试全过程中被问起的有关String的2道面试问题,各自是:

  1. 怎么知道一个字符串数组中某一空格符出現的频次?
  2. 怎样翻转一个字符串数组?

其他的面试问题,现阶段早已整理出去,事后会以blog的方式开展共享。

2. 怎么知道一个字符串数组中某一空格符出現的频次?

在立即问这一难题以前,招聘者先问了我下边这一难题:

请说一下String常见的方式有什么?

该难题实际上是调查Java基本,终究String类在平常的开发设计中应用十分普遍,我那时候关键讲过下列方式:

  1. length
  2. equals
  3. trim
  4. substring
  5. concat
  6. indexOf
  7. lastIndexOf
  8. replace
  9. split
  10. toLowerCase
  11. toUpperCase

左右仅仅 招聘面试时我想起的一少部分方式,大量String的方式大伙儿可在IDEA中查询源代码,终究过多了,以下图示:

在回应完所述难题后,招聘者随后问了该难题:

怎么知道一个字符串数组中某一空格符出現的频次?

听见该难题,我记忆里第一反映是先把字符串数组变换为字符数组,随后应用foreach循环系统,在循环系统身体开展空格符核对,编码以下图示:

public static void main(String[] args) {
    String str = "ABC123ABC";
    char searchChar = 'B';

    int count = 0;
    char[] charArray = str.toCharArray();
    for (char item : charArray) {
        if (item == searchChar) {
            count++;
        }
    }

    System.out.println("空格符" + searchChar + "出現的频次为:" + count);
}

輸出結果以下图示:

空格符B出現的频次为:2

但面试问题毫无疑问不容易那么简单,随后招聘者提升了限定标准:

假如不可以应用循环系统,只应用String自身的方式,怎样保持呢?

保持方式有很多种多样,但推存应用replace()方式,非常好了解,而且高效率,编码以下图示:

public static void main(String[] args) {
    String str = "ABC123ABC";
    String searchChar = "B";
    int count = 0;

    int origialLength = str.length();
    str = str.replace(searchChar, "");
    int newLength = str.length();

    count = origialLength - newLength;

    System.out.println("空格符" + searchChar + "出現的频次为:" + count);
}

并且我认为,有关面试问题:怎么知道一个字符串数组中某一空格符出現的频次?,上边这一保持方式才算是招聘者真实想听见的回答。

3. 怎样翻转一个字符串数组?

由于是电话面试,在面了1个钟头,招聘面试快完毕的情况下,招聘者问了该难题:

如何让一个字符串数组翻转?说下构思就可以

将会许多 同学们第一时间想起的构思是下边那样的:

public static void main(String[] args) {
    String str = "ABC123ABC";

    StringBuilder stringBuilder = new StringBuilder(str);
    stringBuilder.reverse();

    String newStr = stringBuilder.toString();

    System.out.println("翻转前:" + str);
    System.out.println("翻转后:" + newStr);
}

但我认为这毫无疑问并不是招聘者问这一难题的用意,因此我那时候的回应是下边那样的:

能够 运用数据结构中的栈,由于栈的特性是先进后出(这儿能够 提一下和序列的不一样,序列的特性是先进先出),先把字符串数组中的每一空格符按序入栈,再先后出栈,就可以保持字符串数组的翻转。

即入栈次序是:A B C 1 2 3 A B C

而出栈次序是:C B A 3 2 1 C B A

转化成Java编码是下边那样的:

public static void main(String[] args) {
    String str = "ABC123ABC";

    char[] charArray = str.toCharArray();
    Stackstack = new Stack<>();
    StringBuilder newStr = new StringBuilder();

    for (char item : charArray) {
        stack.push(item);
    }

    for (int i = 0; i < charArray.length; i++) {
        newStr.append(stack.pop());
    }

    System.out.println("翻转前:" + str);
    System.out.println("翻转后:" + newStr.toString());
}

輸出結果以下图示:

翻转前:ABC123ABC

翻转后:CBA321CBA

4. 感受

近期的招聘面试,有以下内容感受:

  1. 电话面试比视频面试可靠

    视频面试有点儿尬的觉得,并且有时候会卡屏,比较之下电话面试就不容易存有这种难题

    本人更喜爱电话面试的方式

  2. 招聘面试前多一些提前准备

    开工后的第2天,面了第一家企业,彻底没情况,答的一塌糊涂

    提议招聘面试前一定要调节好情况,非常是此次新春佳节在居家风水的時间有点儿长,更要调节

  3. 一定要以问题为导向

    一定要对你所投寄职位的企业有一定掌握,防止招聘面试根据了你又不愿去,奢侈浪费彼此時间

    提议对自身投寄的职位和企业多花一点时间去细心掌握下

不清楚全班同学近期的招聘面试全是哪些方式的,热烈欢迎在发表评论一起探讨。


/template/Home/Zkeys/PC/Static