工作一年了,打算换工作,遇到了各种各样的面试题。大部分的都是一脸懵逼回答了,记录下。部分有答案的是我自己的答案,不代表正确答案,答案还是要自己动手百度哈
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略
}