苏州软世通面试经历
一、简言
9月3号晚上在软世通旗下的学码思官网投的java实习生的简历,9月5号下午2点正式开始面试,一直经历了2个半小时。先是hr面,然后是项目主管的技术面。自我感觉回答得马马虎虎,最后被告知等待复试通知。
二、hr面试细则
hr是个漂亮的小姐姐,先上来让我简短地自我介绍一下。哪里人,在哪儿上学,今年大几,想找什么工作,做过哪些项目。当hr注意到我独立做过一款还不错的app时(官网链接:
适用于苏科大学子的一款安卓app <http://sukeda.bmob.site/>
),顿时来了兴趣。在大致操作了一下后,说这个阶段来面试java实习岗位的同学,能独立完成一款app,还是比较少的,还不错。听到这里,我也小小得自豪一下。接着问我怎么进行需求调研,遇到难点怎么解决。再在看到简历上的省重点科研立项的团队项目时,由于我是负责整个项目的队长,便问了我一些团队成员的分工问题,有没有使用项目管理工具等。hr试图把我往项目管理的方向上带,问了一些和项目管理方面的问题。总之,hr面没什么大问题,我也回答得很轻松,聊天也很愉快。最后hr领着我去了技术面试。
三、项目主管技术面
管技术面试的是一位项目主管,从他秃的前额看起来经验丰富,这是否也是我的命运,在摸了自己头皮上茂盛的头发后,歇了口气,头发还多,还可以遭得住很多折腾。
闲话不多说,项目主管领着我进入了房间里。打开myeclipse问我用过没,我忙点头称是。我又怀着好奇的心态问,没有笔试吗?项目主管带着不屑的口气谈到,笔试没意思。我哑口无言,看起来情况比较严肃啊。接下来,项目主管就出了一道简单的编程题。
(1)给定1,2,3,4四个数字,组成各不相同的三位数,有多少种?并打印输出生成的三位数。
分析:按照排列组合的原理,从四个数字中选三个数字,百位有4种情况,十位有3种情况,各位有2种情况,按理说应该有24种情况。我们可以使用三重循环,并排除掉相同的序号就行了。
代码:
package day0905; //先有1,2,3,4,问能组成多少个不同的三位数 public class Test { public static
void main(String args[]) { int count = 0; for (int i = 1; i <= 4; i++) { for
(int j = 1; j <= 4; j++) { for (int k = 1; k <= 4; k++) { if (i != j && j != k
&& i != k) { System.out.println(100 * i + 10 * j + k); count++; } } } }
System.out.println("一共有" + count + "个数"); } }
输出:
(2)byte的范围
这个背背就行了,并附上基本数据类型的范围表
(3)获取Class对象的三种方式
【1】由类名获取
Class a = 类名.class;
【2】由类的实例对象获取
Class b = 类的实例对象.getClass();
【3】由全类名获取(需要捕获异常)
try { Class c = Class.forName("类的全类名"); } catch (ClassNotFoundException e) {
e.printStackTrace(); }
(4)并发修改异常是什么,怎么修改?
这道题我也答出来了,从源码角度解释了。但感觉回答得还是不太好。看到这篇文章讲得不错
Java并发--ConcurrentModificationException(并发修改异常)异常原因和解决方法
<https://www.cnblogs.com/bsjl/p/7676209.html>
(5)实现线程的方式
【1】继承Thread类,由于java是单继承,因此实际编程中不推荐这种方式
【2】实现Runnable接口,克服单继承的弊病
【3】实现 Callable 接口
【4】使用 Executor 框架来创建线程池
实现 Runnable 接口这种方式更受欢迎,因为这不需要继承 Thread 类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而 Java
不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。
(6)反射是什么?怎么获取类的私有成员
【1】反射定义:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
【2】获取类的私有成员变量
代码:
package day0905; import java.lang.reflect.Field; class Student { private
String name; private int age; public Student(String name, int age) { this.name
= name; this.age = age; } public String getName() { return name; } public void
setName(String name) { this.name = name; } public int getAge() { return age; }
public void setAge(int age) { this.age = age; } } public class TestReflect {
public static void getPrivateField(Object obj) throws IllegalAccessException {
Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields)
{ //设置私有属性可访问 field.setAccessible(true); System.out.println("属性名:" +
field.getName() + " 值为:" + field.get(obj)); } } public static void main(String
args[]) throws IllegalAccessException { Student student = new Student("jack",
18); getPrivateField(student); } }
输出:
四、最后的总结
总得来说,hr面只要会说,基本上都能过。不过技术面挺简单的,在40分钟内考察了基础编程、基本数据类型、进制转换、多线程与反射等知识。在技术面完成后,hr告诉我主管觉得我基础还不错,并通知我等待复试通知。
热门工具 换一换