首页 > 代码库 > Java面试问题总结

Java面试问题总结

前几天Java面试中遇到的问题,这只是其中的一部分问题,面试中有很多问题是关于数据结构和算法的。在这里做下总结,希望有能力的人可以试着做一下,并在评论区留下您的答案,让大家相互学习。谢谢


程序设计部分

第1题*

已知类定义如下

    class Node {

        public Doublevalue;

        public List<Node>children;

    }

将以下递归程序改成非递归程序(两个程序的输出应保持顺序一致)

    publicstaticvoid process(Node node) {

        for (int i = 0; i < node.children.size(); i++) {

            Node child = node.children.get(i);

            if (child.value < node.value) {

                process(child);

            }

        }

        System.out.println(node.value);

        for (int i = 0; i < node.children.size(); i++) {

            Node child = node.children.get(i);

            if (child.value >= node.value) {

                process(child);

            }

        }

    }

 

第2题*

请完善以下程序,输入为字符数组(数组内每个字符均不相同)和个数n,返回值是由这些字符组成的所有长度为n的字符串

例如输入为{‘a‘,‘b‘,‘c‘}和个数1,则返回值为{"a","b","c"}

例如输入为{‘a‘,‘b‘,‘c‘,‘d‘}和个数2,则返回值为{"ab","ac","ad","ba","bc","bd","ca","cb","cd","da","db","dc"}

    public String[] doit(char[]chars){

        ......

    }

 

第3题**

参考第1题Node类定义,Node类定义了一个树形结构,请完善以下程序

输入node满足以下条件:

1     node的value是大于0的浮点数

2     node的下级节点(以及更下级节点)的value可能是null或者大于0的浮点数

程序的作用如下:

1     将树形结构里面所有value是null的均设为大于0的浮点数

2     非叶子节点(即children数量大于0的节点)的value均等于它的children的value之和

    public void doit(Nodenode){

        ......

    }

 

第4题***

Saga语言由变量定义、变量赋值、条件执行三种语句组成,其中变量定义必须位于另外两种语句之前,三种语句定义如下:

变量定义由变量名和常量值组成:

       def变量名=常量值

变量赋值由变量名和运算表达式组成:

       变量名=运算表达式

条件执行由比较表达式和一系列变量赋值组成:

       if(比较表达式){

              变量赋值1

              变量赋值2

              ......

       }

其中:

a)    变量名由小写字母组成

b)    常量值为浮点数,例如1.1,2.0等

c)    运算表达式由变量、常量值、运算符加减乘除(+,-,*,/)和括号组成

c)    比较表达式由两个运算表达式加比较符(>,<, =)组成,示例a+b>100.0

Saga语言程序示例:

def a=100.0

def b=200.0

def c=1.0

def d=0.0

c=(a+b)/2.0

if(c=150.0){

       d=d+1.0

       d=d+1.0

}

请完善以下程序(写出思路即可),输入是任意Saga语言程序(字符串格式),返回值是程序中所有变量及其最终值。

    publicMap<String, Double> doit(Stringprog){

        ......

    }

 

数据分析部分

第1题**

下图中为一列时序变量,绿色点为正常数据点,红色为异常数据点。请设计算法可识别异常点,简述算法框架和内容要点。

技术分享

技术分享


技术分享



逻辑与几何部分

第1题***

20个球,按顺序标上序号1-20,将这些球放进一个箱子,老师从这个箱子中随机取出2个球,序号分别是a和b,将a与b的和告诉学生甲,将a与b的积告诉学生乙,然后

甲问乙:你知道a和b分别是多少吗?

乙回答:不知道

乙问甲:你知道a和b分别是多少吗?

甲回答:不知道

乙说:呵呵,我知道了

甲说:呵呵,我也知道了

请回答a和b分别是多少,并写出推理过程。

 

第2题**

已知平行四边形的边长分别为ab,外接正方形如图所示,只外接点,无外接边,求外接正方形边长c的范围

 技术分享

 


 


Java面试问题总结