Java实习生面试题

最近公司面试实习生搞了几个面试题,前面都是基础考察,后面两个是自己想的。

  • 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?


  • 简述Java中堆与栈的区别


  • 简述Java实现线程的几种方式


  • 阅读如下代码段,并指出其中存在的问题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class MySQLConnection {
    private static Connection mySQLConnection;
    public static Connection getMySQLConnection(){
    Calendar today = Calendar.getInstance();
    int hour =today.get( Calendar.HOUR_OF_DAY);
    if(hour > 8 && hour <23) {
    if(mySQLConnection != null) {
    return mySQLConnection;
    } else {
    try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/funnystudy","root","123456");
    mySQLConnection = conn;
    } catch (Exception e) {
    e.printStackTrace();
    }
    return mySQLConnection;
    }
    }
    return null;
    }
    }




  • 使用Java处理如下问题。

    现有一张游戏玩家登陆数据表,表结构为 : ‘id’,’name’,’login_date’,现在表中有最近三十天的玩家登陆数据,求出,连续15天的登陆玩家数以及累计15天登陆的玩家数。
    注:连续登录是指,某个玩家在一段时间内,每天都登录游戏,比如1号到15号每天都登录,没错过任何一天,那他连续登录时间是15.一般我们习惯取最大连续登录时间。累计登录是指,某个玩家在一段时间内,登录天数的总和,比如1号 4号 5号登录了,其他时间都没登录,那他这段时间的累计登录天数是3天。