【面试经历】苏州软世通面试经历及面试题目解答

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33591903/article/details/82428175

 

                                         苏州软世通面试经历

一、简言

9月3号晚上在软世通旗下的学码思官网投的java实习生的简历,9月5号下午2点正式开始面试,一直经历了2个半小时。先是hr面,然后是项目主管的技术面。自我感觉回答得马马虎虎,最后被告知等待复试通知。

 

二、hr面试细则

hr是个漂亮的小姐姐,先上来让我简短地自我介绍一下。哪里人,在哪儿上学,今年大几,想找什么工作,做过哪些项目。当hr注意到我独立做过一款还不错的app时(官网链接:适用于苏科大学子的一款安卓app),顿时来了兴趣。在大致操作了一下后,说这个阶段来面试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(并发修改异常)异常原因和解决方法


(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告诉我主管觉得我基础还不错,并通知我等待复试通知。

展开阅读全文

没有更多推荐了,返回首页