一面
1、首先是自我介绍下,因为是技术面试,所以介绍的主要偏项目经验这方面,所以我们先就项目的所用框架、所需技术等聊了一些;
2、期间又问我多线程和高并发的相关知识,这个也是java绕不过去的门槛之一;
3、然后问了我mybits和hibernate的不同点;
4、还有spring和apache自己封装的一些方法问我用过哪些;
5、最后问了我一个arrayList和linkendList的区别;
答:从其底层的结构上来答linkendList是双向的链表结构,arrayList是基于动态数组的数据结构。linkendList在执行get和set时需要移动指针,所以效率不如arrayList,但linkendList的add 和remove的效率比较高,因为arrayList要移动数组的数据。
机试
需要注意两点:
①你只能命名类名为Main,不能是其他的;
②需要注意的是可以在自己的IDE上调试,但是一定要把自己运行测试好的代码要全部copy到代码框内,包括导包的代码。
下面是我的一道oj题目:
骰子有6个面,现在用1,2,3,4,5,6分别代表一个骰子的左,右,前,后,上,下的初始位置,用R代表向右滚动一次,用L代表向左滚动一次,可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向右翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示逆时针旋转90度),现从初始状态开始,根据输入的动作序列,计算得到最终的状态。
输入描述:
初始状态为:123456
输入只包含LRFBAC的字母序列,最大长度为50,可重复
输出描述:输出最终状态
输入例子:RA
输出例子:436512
`import java.util.Scanner;
public class shaizi {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String [] str_array = {“1”,”2”,”3”,”4”,”5”,”6”};
String s = scan.nextLine();
String [] s1 = s.split("");
int len = s.length();
for(int i = 0 ; i< s1.length;i++)
{
String ss = s1[i];
rv(str_array,ss);
}
int t = 0;
for( int i = 0; i <str_array.length;i++)
{
t = t*10 +Integer.valueOf(str_array[i]);
}
System.out.println(t);
}
static void rv(String [] str_array,String s)
{
switch(s) {
case "L":
change(str_array,0,5);
change(str_array,1,4);
change(str_array,0,1);
break;
case "R":
change(str_array,0,4);
change(str_array,1,5);
change(str_array,0,1);
break;
case "F":
change(str_array,2,5);
change(str_array,3,4);
change(str_array,2,3);
break;
case "B":
change(str_array,2,4);
change(str_array,3,5);
change(str_array,2,3);
break;
case "A":
change(str_array,0,2);
change(str_array,1,3);
change(str_array,0,1);
break;
case "C":
change(str_array,0,3);
change(str_array,1,2);
change(str_array,0,1);
break;
default:
break;
}
}
static void change(String [] str_array,int a,int b)
{
String temp = str_array[a];
str_array[a] = str_array[b];
str_array[b] = temp;
} HR面:
谈薪资,谈离职原因,谈职业发展,谈家庭构成,基本的定级和大概的薪酬;
全部评论
(3) 回帖