一面
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) 回帖