为了账号安全,请及时绑定邮箱和手机立即绑定

面试编程题总结 -java

标签:
测试

1、判断一个正整数,是否对称

public class Interview {
    public static void main(String[] args){
        System.out.println(Symmetry.symmetry(5777));
    }
}
class Symmetry {
    public static String symmetry(int numb){
        String result = "equal";
//整型转字符串
        String str = ""+ numb;
//字符串转字符串数组
        String[] strArray = str.split("");
        for (int i = 0;i<strArray.length;i++){
            if(!(strArray[i].equals(strArray[strArray.length-i-1]))){
                result = " not equal";
                break;
            }
        }
        return result;
    }

}

补充:可以使用StringBuffer中的reverse方法,然后再对两个字符串进行比较。

String str = new StringBuffer(str).reverse().toString()

2、冒泡排序

public class Interview {
    public static void main(String[] args){
        int[] number = {11,44,55,66,77,22};
        int[] result = Bubler_Sort.bubler_Sort(number);
        for (int i=0;i<result.length;i++){
            System.out.print(result[i]+",");
        }

    }
}
class Bubler_Sort {
    public static int[] bubler_Sort(int number[]){
        int temp = 0;
        for (int i=0;i<number.length;i++){
            for (int j=0;j<number.length-1;j++){
                if (number[j+1]>number[j]){
                    temp = number[j];
                    number[j] = number[j+1];
                    number[j+1] = temp;
                }
            }

        }
        return  number;
    }

}

3、要求一个文本文件中读取所有内容,查找出出现次数最多的单词

    public static void main(String args[])throws Exception{
        File file=new File("/Users/yuanyi/Downloads/test.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line = null;
        //定义一个map集合保存单词和单词出现的个数
        TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
        int number =0;
        String word = null;
        //读取文件
        while((line=br.readLine())!=null){
//大写转小写
            line.toLowerCase();
//匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
            String reg1 = "\\s+";
//匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集
            String reg2 ="\\w+";
            //将读取的文本进行分割
            String str[] = line.split(reg1);
            for(String s: str){
                if(s.matches(reg2)){
                    //判断集合中是否已经存在该单词,如果存在则个数加一,否则将单词添加到集合中,且个数置为1
                    if(!tm.containsKey(s)){
                        tm.put(s,1);
                    }else{
                        tm.put(s,tm.get(s)+1);
                    }
                }
            }
        }
        for (String key:tm.keySet()){
            if (tm.get(key)>number){
                number = tm.get(key);
                word = key;
            }
        }
        System.out.println(word);
        System.out.println(tm);
    }

4、Java 中String、StringBuffer、StringBuild的区别
两个方面的区别一个是运行速度和线程安全
1)运行速度String小于StringBuffer小于StringBuild
String是字符串常量,StringBuffer、StringBuild是字符串变量。

String str="qqq"; 
str=str+"www";

首先第一行JVM创建了一个对象str赋值qqq,第二行JVM新创建了一个对象str把之前的str对象+www给新的str对象,然后JVM的的垃圾回收机制(GC)会把第一行的str进行回收,实际对于String来说是创建了一个新对象的过程。StringBuffer、StringBuild可以使用append的方式在原来的对象上追加。

2)StringBuffer的线程安全大于StringBuild
如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。

3)总结
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
参考:https://www.cnblogs.com/su-feng/p/6659064.html

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件测试工程师
手记
粉丝
172
获赞与收藏
904

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消