乐趣区

关于java:持续输出面试题系列之综合面试题一

选择题

在 Java 中,负责对字节代码解释执行的是
A. 应用服务器
B. 虚拟机
C. 垃圾回收器
D. 编译器

解析:B,Java 程序从源文件创立到程序运行要通过两个步骤:
①编译:源文件由编译器编译成字节码(ByteCode)
②运行:字节码由 java 虚拟机解释运行。因为 java 程序既要编译同时也要通过 JVM 的解释运行,所以说 Java 被称为半解释语言(“semi-interpreted” language)。

一个栈的输出序列为 1 2 3 4 5, 则下列序列中不可能是栈输入的序列的是
A. 5 4 1 3 2
B. 2 3 4 1 5
C. 1 5 4 3 2
D. 2 3 1 4 5

解析:A,栈的特点是先进后出,比拟笨的办法是一个个的试:
B:先进 1 和 2,2 出栈进入 3,3 出栈, 进入 4,4 出栈,1 再出栈,5 进,5 出栈, 即 23415
C:1 进,1 出,2345 进, 而后 5432 出, 就是 15432
D:进 1 和 2,2 出栈进入 3,3 出栈, 进入 4, 在进入 5,5 出,4 在出, 就是 23145

下列那一个选项依照程序包含了 OSI 模型的 7 个档次
A. 物理层 数据链路层 传输层 网络层 会话层 表示层 应用层
B. 物理层 数据链路层 会话层 网络层 传输层 表示层 应用层
C. 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
D. 网络层 传输层 物理层 数据链路层 会话层 表示层 应用层

解析:C

当客户度敞开一个从连接池中获取的连贯, 会产生上面哪一种状况
A. 连贯不会敞开, 只是简略地归还给连接池
B. 连贯被敞开 , 但又被从新关上并归还给连接池
C. 连贯永久性敞开

解析:A

在 UML 提供的图中 , 用于按数据程序形容对象间的交互的是:C
A. 合作图
B. 网络图
C. 序列图
D. 状态图

解析:C

简答题:

MySQL 中的 varchar 和 char 有什么区别?

  • char 是一个定长字段, 如果申请了 char(10) 的空间, 那么无论理论存储多少内容。该字段都占用 10 个字符
  • varchar 是变长的, 也就是说申请的只是最大长度, 占用的空间为理论字符长度 +1, 最初一个字符存储应用了多长的空间。

在检索效率上来讲,char > varchar, 因而在应用中, 如果确定某个字段的值的长度, 能够应用 char, 否则应该尽量应用 varchar。例如存储用户 MD5 加密后的明码, 则应该应用 char。

编程题:

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

package com.hcx.security.core.validate.code;

import java.util.Iterator;
import java.util.TreeSet;

public class NumberRandom {String[] stra = {"1", "2", "2", "3", "4", "5"};
    int n = stra.length;
    boolean[] visited = new boolean[n];
    String result = "";
    TreeSet<String> ts = new TreeSet<String>();
    int[][] a = new int[n][n];

    private void searchMap() {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (i == j) {a[i][j] = 0;
                } else {a[i][j] = 1;
                }
            }
        }
        // 3 和 5 不能相连
        a[3][5] = 0;
        a[5][3] = 0;
        // 开始遍历
        for (int i = 0; i < n; i++) {search(i);
        }
        Iterator<String> it = ts.iterator();
        while (it.hasNext()) {String str = it.next();
            // 4 不能在第三位
            if (str.indexOf("4") != 2) {System.out.println(str);
            }
        }
    }

    private void search(int startIndex) {visited[startIndex] = true;
        result = result + stra[startIndex];
        if (result.length() == n) {ts.add(result);
        }
        for (int j = 0; j < n; j++) {if (a[startIndex][j] == 1 && visited[j] == false) {search(j);
            } else {continue;}
        }
        // 一个 result 完结后排掉最初一个,寻找别的可能性,若没有的话,则持续向前排掉以后最初一个
        result = result.substring(0, result.length() - 1);
        visited[startIndex] = false;
    }

    public static void main(String[] args) {new NumberRandom().searchMap();}
}
退出移动版