Java面试题总结

工作一年了,打算换工作,遇到了各种各样的面试题。大部分的都是一脸懵逼回答了,记录下。部分有答案的是我自己的答案,不代表正确答案,答案还是要自己动手百度哈
0.java的多线程创建有几种方式,分别是什么
1.说一说java的集合。平时为什么要用list,而不是用set,他们有什么区别?
2.说一说你理解的MVC。
3.用新增用户功能说明下MVC实现过程
4.linux的压缩命令
5.你的项目出了问题,你是怎么去查看日志的?说说linux下查看Tomcat日志的命令?
6.linux下,现在有一个test用户,要给他加上读的权限
7.spring AOP的底层实现原理
8.springMVC常用的注解有哪些
9.有了解过MyBatis的缓存吗?
10.了解过数据库连接池吗?有没有了解过具体的配置?这些配置有什么用?
11.spring和Struts是如何配置
12.一个DIV中间有文字,现在让文字横向纵向居中
13.说一说jQuery的选择器
14.现在获得了一个td,他的外层有一个元素有一个特定的class,如何用选择器获得这个外层的原素
15.说一说sql的左连右连
16.有没有使用过索引,说一说你对索引的理解

16.得到一个用长整型表示的时间s(秒),用一个方法用将这个时间表示成“x天x时x分x秒”的字符串形式。如果x=0,则该项不写出来。要求使用循环。注意内存消耗。
绞尽脑汁也没有想到什么地方需要用到循环,最后得到如下答案:
希望得到大佬的正确解法

public static String handleSecound(long s) {
        String rst = "";
        for (int i = 0; i < 4; i++) {
            if(0 == i &&  s >= 24*3600) {
                rst += s / (24*3600) + "天";
                s = s % (24 * 3600);
            } else if(1 == i &&  s >= 3600) {
                rst += s / 3600 + "时";
                s = s % 3600;
            } else if(2 == i && s >= 60) {
                rst += s / 60 + "分";
                s = s % 60;
            } else if(s > 0) {
                rst += s + "秒";
            }
        }
        return rst;
    }

17.a=2, n = 4, 则s = 2 + 22 + 222 + 2222。要求从键盘输入a和n的值,计算s。
第一反应想到的是Math中的pow(x, y)方法, 求x的y次方,x,y的值都是浮点类型。然后觉得double类型转int类型会造成数据丢失,就用了下面这个方法,思路清奇

public static void calaS() {
        int a = 0, n = 0;
        Scanner sc = new Scanner(System.in);
        a = sc.nextInt();
        n = sc.nextInt();
        long s = 0;
        String temp = "";
        for (int i = 0; i < n; i++) {
            temp += a;
            s += Integer.parseInt(temp);
        }
        sc.close();
        System.out.println(s);
    }

当数字小于10的时候,好像能得到正确的结果,大于等于10结果就很奇怪了。

18.输入一个矩阵,交换矩阵的行和列,并按一下格式输出

[
    [1, 4, 7],
    [2, 5, 8],
    [3, 6, 9]
]
[
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]   
]

我的答案如下:

public static void fun(int [][]arr) {
    for(int i = 1; i < arr.length - 1; i++) {
        for (int j = i+1; j < arr[i].length; j++) {
            int tmp = arr[i][j];
            arr[i][j] = arr[j][i];
            arr[j][i] = tmp;
        }
    }
    //print略
}

19.输出杨辉三角

         1
        1 1
       1 2 1
      1 3 3 1
     1 4 6 4 1
     ……
要求输出10

我的实现如下

public static void yangHui() {
        int [][] arr = new int[10][10];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if(0 == j || i == j) {
                    arr[i][j] = 1;
                } else {
                    arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
                }
            }
        }
        //print略
    }

你可能感兴趣的:(Java,面试)