JAVA面试题-数组字符串基础

时间:2022-02-05 09:59:59

1、大写的Integer和String是可变类还是不可变类?怎么定义不可变类?
不可变.
用final关键字,如
public final class Integer extends Number

2、比较字符串中的compareTo() 方法是什么原理?
返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方。

如果参数字符串等于此字符串,则返回值 0;
如果此字符串小于字符串参数,则返回一个小于 0 的值;
如果此字符串大于字符串参数,则返回一个大于 0 的值。

3、如何查找字符串最后一次出现的位置?
strOrig.lastIndexOf(String name)

4、请一行代码将字符串反转。
String reverse = new StringBuffer(string).reverse().toString();

new StringBuilder(string).reverse().toString();

5、说一下实现字符串分割的3种以上的办法
1、使用split方法;
2、使用遍历组装数组;
3、使用StringTokenizer ,如:

String str = "a,b,c";
StringTokenizer st=new StringTokenizer(str,",");
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}

6、如果设计一个两个字符串同长度一段区域的比较的函数,你会怎么设计方法的参数?
没有固定答案,仅考查基础逻辑。

    public boolean regionMatches(boolean ignoreCase, int toffset,
String other, int ooffset, int len) {
char ta[] = value;
int to = toffset;
char pa[] = other.value;
int po = ooffset;
// Note: toffset, ooffset, or len might be near -1>>>1.
if ((ooffset < 0) || (toffset < 0)
|| (toffset > (long)value.length - len)
|| (ooffset > (long)other.value.length - len)) {
return false;
}
while (len-- > 0) {
char c1 = ta[to++];
char c2 = pa[po++];
if (c1 == c2) {
continue;
}
if (ignoreCase) {
// If characters don't match but case may be ignored,
// try converting both characters to uppercase.
// If the results match, then the comparison scan should
// continue.
char u1 = Character.toUpperCase(c1);
char u2 = Character.toUpperCase(c2);
if (u1 == u2) {
continue;
}
// Unfortunately, conversion to uppercase does not work properly
// for the Georgian alphabet, which has strange rules about case
// conversion. So we need to make one last check before
// exiting.
if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
continue;
}
}
return false;
}
return true;
}

6、为什么StringBuffer连接字符串在大量的修改情况下比用String的“+”要效率高?
老的不能再老的考题了。
String类对象不可改变的。字符串常量池可以将一些字符常量放在常量池中重复使用,避免每次都重新创建相同的对象、节省存储空间。但如果字符串是可变的,此时相同内容的String还指向常量池的同一个内存空间,当某个变量改变了该内存的值时,其他遍历的值也会发生改变。

String的“+”不断的新建对象(由不可变性决定了),而StringBuffer在一个对象上进行修改。

7、Collections类中的集合最小值函数min(Collection<? extends T> coll)内部实现原理是什么?
采用了泛型类实现Comparable接口,并且将集合通过迭代器iterator遍历得出最小值。

8、下面数组:int[] my_array = {1, 2, 5, 5, 6, 6, 7, 2, 9, 2};
请使用1次循环,找出重复的元素(即2、5、6)

分析,一般找重复元素需要2次循环,如下:

    public static void findDupicateInArray2(int[] a) {
int count=0;
for(int j=0;j<a.length;j++) {
for(int k =j+1;k<a.length;k++) {
if(a[j]==a[k]) {
count++;
}
}
if(count==1)
System.out.println( "重复元素 : " + a[j] );
count = 0;
}
}

实际上,因为数组的数量和最大值很小,所以可以用桶排序的思路来做1次循环,如下

    public static void findDupicateInArray1(int[] a) {
int max = 9;//本题中最大的元素是9
int[] bucket = new int[max + 1]; for(int j=0;j<a.length;j++) {
//如果对应位上有值,则代表有重复值
if(j>0 && bucket[a[j]]!=0)
System.out.println( "重复元素 : " + a[j] ); bucket[a[j]]= a[j]; //将数值放入桶数组的下标
}
}

9、你来设计一个两个数组的并集函数,应该如何设计?
分析,应注意重复值的排除,使用set的特性。例子:
// 求两个字符串数组的并集,利用set的元素唯一性

public static String[] union(String[] arr1, String[] arr2) {
Set<String> set = new HashSet<String>(); for (String str : arr1) {
set.add(str);
} for (String str : arr2) {
set.add(str);
} String[] result = { }; return set.toArray(result);
}

10、写一个斐波那契数列函数

分析,运用递归。
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……

特别指出:第0项是0,第1项是第一个1。

这个数列从第三项开始,每一项都等于前两项之和。

public static long fibonacci(long number) {
  if ((number == 0) || (number == 1))
    return number;
  else
    return fibonacci(number - 1) + fibonacci(number - 2);
}

11、cron表达式“0 10 10 ? * 6L”是什么意思?
每月的最后一个星期五上午10:10触发,注意 第6位的星期几是从周日开始,1-7,1代表周日,2代表周一,6代表周五,7代表周六

JAVA面试题-数组字符串基础的更多相关文章

  1. JAVA面试题集之基础知识

                           JAVA面试题集之基础知识 基础知识:  1.C 或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就 ...

  2. &lbrack;原&rsqb;Java面试题-将字符串中数字提取出来排序后输出

    [Title][原]Java面试题-将字符串中数字提取出来排序后输出 [Date]2013-09-15 [Abstract]很简单的面试题,要求现场在纸上写出来. [Keywords]面试.Java. ...

  3. 2018年最新JAVA面试题总结之基础(1)

    转自于:https://zhuanlan.zhihu.com/p/39322967 1.JAVA中能创建volatile数组吗?volatile能使得一个非原子操作变成原子操作吗? 回答: 能,Jav ...

  4. Java&lpar;面试题&rpar;:字符串截取

    在Java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符. 但对应的字节数不同,一个汉字占两个字节. 定义一个方法,按照指定的字节数来取子串. 如:对于“ab你好”,如果取三个字 ...

  5. Java笔试题解答和部分面试题

    面试类  银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...

  6. JSon&lowbar;零基础&lowbar;007&lowbar;将JSon格式的&quot&semi;数组&quot&semi;字符串转换为Java对象&quot&semi;数组&quot&semi;

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

  7. 收集了50道基础的java面试题

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...

  8. java面试题及答案(基础题122道,代码题19道)

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  9. Java面试题及答案(基础122道,编码19道)

    JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...

随机推荐

  1. &lbrack;TYVJ&rsqb; P1423 GF和猫咪的玩具

    GF和猫咪的玩具 描述 Description GF同学和猫咪得到了一个特别的玩具,这个玩具由n个金属环(编号为1---n),和m条绳索组成,每条绳索连接两个不同的金属环,并且长度相同.GF左手拿起金 ...

  2. ip地址的网络配置

    记录一下linux下的网络配置 3.执行命令(通过ifconfig查一下网卡): vi /etc/sysconfig/network-scripts/ifcfg-eth2 注:按字母a,代表插入. 编 ...

  3. nginx系列6:nginx的进程结构

    nginx的进程结构 如下图: 通过ps –ef | grep nginx可以看到共有三个进程,一个master进程,两个worker进程. nginx是多进程结构,多进程结构设计是为了保证nginx ...

  4. apache&lowbar;php&lowbar;mysql

    软件下载 目前,Apache和PHP均未出现官方的64位版本. Apache 64位: http://www.blackdot.be/?inc=apache/binaries 这个安装文件我已经上传到 ...

  5. jquery如何在元素后面添加一个元素

    jQuery添加插入元素技巧: jquery添加分为在指定元素的里面添加和外面添加两种: 里面添加使用(append 和prepend) 里面添加又分为在里面的前面添加和后面添加 里面的前面添加使用 ...

  6. 路遥眼里的河南人&lt&semi;平凡的世界&gt&semi;

    路遥,一个作过农民,当过小学教师,用平凡的生命,却写出不平凡的小说<平凡的世界>,他喜欢夜的宁静,喜欢在夜里思考,他说只有在夜里我们才是最真实的自己.所以他喜欢在夜里创作,这部小说也是在这 ...

  7. 通过 Kubernetes 和容器实现 DevOps

    https://mp.weixin.qq.com/s/1WmwisSGrVyXixgCYzMA1w 直到 Docker 的出现(2008 年),容器才真正具备了较好的可操作性和实用性.容器技术的概念最 ...

  8. 微信小程序 --- page&period;js文件

    page.js文件是写当前 page.wxml 页面的 JS 脚本文件: 示例: //获取应用实例 const app = getApp() Page({ data: { navComOneOnOff ...

  9. Git命令速查表【转】

    本文转载自:http://www.cnblogs.com/kenshinobiy/p/4543976.html 一. Git 常用命令速查 git branch 查看本地所有分支git status ...

  10. Math&period;abs为Integer&period;Min&lowbar;VALUE返回错误的值

      Math.abs为Integer.Min_VALUE返回错误的值 这段代码: System.out.println(Math.abs(Integer.MIN_VALUE)); 回报-2147483 ...