美文网首页Java基础面试技巧
Java面试经典编程题

Java面试经典编程题

作者: 莫问以 | 来源:发表于2018-11-05 09:30 被阅读10次

1、有1,2,2,3,4,5这6个数字,用Java写一个main函数,打印出所有不同的排列,如:512234
要求: '4'不能在第三位, '3'与'5'不能相连

package com.test;
/**
 * 6个数字最小组合为122345
 * 最大组合为543221
 * 去除这中间规则不允许的即可
 */
public class PaiLie {
 
    private static String[] notExistNumber = new String[] { "0", "6", "7", "8", "9" };
    private static String[] mustExistNumber = new String[] { "1", "2", "2", "3", "4", "5" };
 
    private static boolean isValidNumber(String str) {
        // 检查是否有非法数字
        for (String number : notExistNumber) {
            if (str.indexOf(number) >= 0) {
                return false;
            }
        }
        // 检查是否是这六个数字的组合,不能有222222或者334422等
        for (String number : mustExistNumber) {
            int temp = str.indexOf(number);
            if (temp < 0) {
                return false;
            } else if ((str.indexOf(number, temp + 1) > temp) 
                                  && str.charAt(temp) != '2') {
                return false;
            }
        }
        // 检查4在不在第三位,是返回false
        if (str.charAt(2) == '4') {
            return false;
        }
        // 检查是否存在'3'与'5'相连,有返回false
        if (str.indexOf("35") >= 0 || str.indexOf("53") >= 0) {
            return false;
        }
        return true;
    }
 
    public static void main(String[] args) {
        for (int i = 122345; i < 543221; i++) {
            if (isValidNumber(String.valueOf(i))) {
                System.out.println(i);
            }
        }
    } 
}

2、一个数如果恰好等于它的因子之和, 这个数就称为”完数”,例如 6 = 1+2+3。编程找出0-1000以内的所有完数

package com.test;

public class WanShu {
    
    private static boolean isWanShu(int shu){
        int sum = 0;
        for (int i = 1; i < shu; i++) {
            if(shu%i==0){
                sum+= i;
            }
        }
        if(sum==shu){
            return true;
        }else{          
            return false;
        }   
    }
    
    public static void main(String[] args) {
        for (int i = 1; i < 1000; i++) {
            if(isWanShu(i)){
                System.out.println(i);
            };
        }
    }
}

3、当 n = 5 时,下列函数的返回值是:(A)

int foo(int n)
    {
        if(n<2)return n;
        return foo(n-1)+foo(n-2);
    }

A.5
B.7
C.8
D.1
解析:Result=foo(4)+foo(3)
foo(4)=foo(3)+foo(2)
foo(3)=foo(2)+foo(1)
foo(2)=foo(1)+foo(0)
foo(1)=1
foo(0)=0
所以foo(2)=1,foo(3)=2,foo(4)=3

4、下面程序输出的结果是(A)

static boolean foo(char c) {
        System.out.print(c);
        return true;
    }
    
public static void main(String[] args) {
        int i = 0;
        for (foo('A'); foo('B') && (i < 2); foo('C')) {
            i++;
            foo('D');
        }
} 

A. ABDCBDCB
B. ABDCDBCB
C. ABDBCDCB
D. ABDBCDCB
解析:首先,必定是ABDC打头,排除C、D,随后执行foo('B') && (i < 2)这一项,结果为B,可得出结果为A。执行顺序--foo('A')--foo('B')&&true--foo('D')--foo('C')--foo('B')&&true--foo('D')--foo('C')--foo('B')&&false--end

相关文章

  • Java面试经典编程题

    1、有1,2,2,3,4,5这6个数字,用Java写一个main函数,打印出所有不同的排列,如:512234要求:...

  • java之“多态”

    本小仙女在刚刚工作一年的时候,自认为自己很懂java,然后看了大量的什么“java面试宝典”、“java面试经典题...

  • 母校为什么采用《java开发实战经典》作为教材?

    离开学校,面试过程中,面试官经常提到《java编程思想》这本书,为什么大学却以《java开发实战经典》作为教材了?...

  • Java面试编程题

    1. 有一个数组,按偶奇降序排序后,按照偶奇的形式交替输出,例如{2, 4, 3, 6, 1, 5, 7, 8, ...

  • BD1 - Java 1-4 周五总结

    上午小组总结: 关于收获: 面试时考查: Java基础 逻辑思维 读代码能力 写代码能力(编程题) 算法题 学习过...

  • Java程序算法题50道

    JAVA基础编程练习50题 本文对50道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,...

  • BD1 - Java 1-1

    面试时考查:Java基础逻辑思维读代码能力写代码能力(编程题)算法题 学习过程中 要从网上找题刷题!再看公司的需求...

  • 有追求的程序员书单

    Java经典进阶书籍 Effective Java Java编程思想 Java并发编程实战 Java核心技术卷一 ...

  • 前端面试的经典题

    前端面试的经典题 前端面试三部曲 前端面试概念收集器 前端面试的经典题 前端面试的难题和怪题 Javascript...

  • 【Java多线程编程题】两个线程循环输出A和B

    非个人面试,这是京东面试的一道编程题 前言:这道题挺有意思的,刚好我刚学了基础的Java多线程,那就试一试。另外以...

网友评论

    本文标题:Java面试经典编程题

    本文链接:https://www.haomeiwen.com/subject/zpujxqtx.html