Java面试中可能遇到的笔试代码题

  最近要准备换份工作,所以看了一些面试相关的内容,把相关的部分代码题大致整理一下,方便自己以后查看,也可以给广大朋友们提供参考,不定时更新。(为了方便调用,所有的方法都定义为静态的了。)

1、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按照字节截取的字符串。

  但是要保证汉字不能被截取半个,如“这A是B一个测试CDE”-3,应该截为“这A”,输入“这A是B一个测试CDE”-7,应该输出为“这A是B”,而不是“这A是B+一的半个”。
  注意:在写代码的时候一定要注意自己的编码环境,GBK的编码格式下输出结果和上述题目一致,UTF-8的话,输出结果分别为“这”“这A是”,这是因为在UTF-8编码下,一个汉字占3个字节。其他编码格式对应的中文字节数请自行查询。
一个参考:

	public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "中国";
        System.out.println(str.getBytes("UTF-8").length);
        System.out.println(str.getBytes("GBK").length);
        System.out.println(str.getBytes("ISO-8859-1").length);
    }
    ---------------------------
    输出结果是:6 4 2

主代码:

	public static void main(String[] args) {
        String string = "这A是B一个测试CDE";
        System.out.println(splitSpring(string, 3));
        System.out.println(splitSpring(string, 7));
    }

    public static String splitSpring(String str, int i){
        if(str != null && str.length() > 0){
            byte[] bytes = str.getBytes();
            if(i > bytes.length){
                return "输入的截取长度超出字符串长度";
            } else {
                if(bytes[i] < 0){
                    //这种情况为汉字的截半,按照要求舍弃
                    return new String(bytes, 0, i-1);
                } else
                    return new String(bytes, 0, i);
            }
        } else {
            return "传入的字符串为空";
        }
    }

2、一个大于0的整数,按照n 2n 4n 8n 16n…的顺序递增,当值大于5000时结束,之后再倒着输出。

  如 1237 2474 4948 9896 9896 4948 2474 1237

	public static void main(String[] args) {
        doubleNum(1237);
    }

    public static void doubleNum(int n){
        System.out.print(n+" ");
        if(n < 5000)
            doubleNum(2*n);
        System.out.print(n+" ");
    }

3、打印字符的个数。

  给定一个字符串(英文、中文、数字),方法一:输出各种字符出现的次数;方法二:输出不同种类字符的个数。如:“中国aafdsg是多fds民族45621国家”,输出结果见下文代码块。

	public static void main(String[] args) {
        methodOne("中国aafdsg是多fds民族45621国家");
        methodTow("中国aafdsg是多fds民族45621国家");
    }

    public static void methodOne(String str) {
        Map<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            Integer num = map.get(c);
            if (num == null) {
                num = 1;
            } else
                num++;
            map.put(c, num);
        }
        //jdk 1.8
        map.forEach((key, value) -> {
            System.out.println(key + ":" + value);
        });
        // jdk 1.8 以下
        for (Character key : map.keySet()) {
            System.out.println(key + ":" + map.get(key));
        }
    }

    public static void methodTow(String str) {
        int englishNum = 0;
        int chineseNum = 0;
        int digitNum = 0;
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c >= '0' && c <= '9')
                digitNum++;
            else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
                englishNum++;
            else
                chineseNum++;
        }
        System.out.println("中文字符个数:" + chineseNum + ";英文字符个数:" + englishNum + ";数字个数:" + digitNum++);
    }
-------------------------------------------------------------------------------
方法一的输出:
a:2
d:2
f:2
g:1:1:1:1:1
1:1
2:1
s:2
4:1
5:1
6:1:1:1:2
方法二的输出:
中文字符个数:8;英文字符个数:9;数字个数:5
常见Java面试大全的程序面试程序,很有影响力的哦!好好珍惜这个资料吧!有Java常见面试的冒泡,常见的算法,继承,多态 1.抽象: 抽象就是忽略一个主与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问,而只是选择其的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值