尼克老湿の面试回顾(5)

前言

自如

面试内容

笔试

1. 下列哪些定义正确()
A. int i = 0xFFFFFFFF;
B. char c = '\u0571';
C. byte b = 01;
D. int i = 'a';
E. long l = 45555566666L;
复制代码
2. 下列哪些生成新的String对象()
A. String s = new String();
B. String s = new String("A");
C. String s = "";
D. String s = "A".intern();
E. String s = (String)String.class.newInstance();
复制代码
3. 根据下面的代码,选择可能的结果()
public class Demo {

    void change(String s){
        s = s.replace('A','E');
        s = s.toLowerCase();
    }
    
    public static void main(String[] args){
        Demo d = new Demo();
        String str = "BEA";
        d.change(str);
        System.out.println(str);
    }

}
复制代码
4. 有两个页面a.jsp和b.jsp,要从a.jsp传值到b.jsp有几种方法?
5. 解释下sql注入?怎么有效的防止sql注入?
6. try()里面有一个return语句,那么紧跟在这个try候的finally()里面的code会不会被执行,什么时候被执行,在return前还是后?
7. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?sleep()和wait()有什么区别?
8. ArrayList和Vector的区别?
9. 说一下Java常见的设计模式,并写出一种单例模式的实现方式
10. 数据库第三范式是什么?
11. 软件生命周期,包括有问题的定义及规划,需求分析,软件设计,程序编码,软件测试,运行维护。请简单介绍一下每个阶段的实际意义以及各阶段间的相互作用。你认为重要的事那个阶段?
12. 编写一段Java代码,展示程序中存在内容泄露的问题,并标明内存泄露的位置。

1). 堆内存溢出


/**
 * VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
 * */

public class HeapOOM {

    static class OOMObjetct{

    }

    public static void main(String[] args){
        List<OOMObjetct> list = new ArrayList<>();
        while (true){
            list.add(new OOMObjetct());
        }
    }
}
复制代码

2). 虚拟机栈和本地方法栈OOM


/**
 * VM Args : -Xss128k
 * */

public class JavaVMStackSOF {

    private int stackLength = 1;

    public void stackLeak(){
        stackLength ++;
        stackLeak();
    }

    public static void main(String[] args){
        JavaVMStackSOF oom = new JavaVMStackSOF();
        try {
            oom.stackLeak();
        }catch (Exception e){
            System.out.println("stack length : " + oom.stackLength);
            throw  e;
        }
    }
}
复制代码

3). 运行时常量池导致的内存溢出异常

/**
 * VM Args : -XX:PermSize=10M -XX:MaxPermSize=10M
 * */
 public class RuntimeConstantPoolOOM {

    public static void main(String[] args){
        List<String> list = new ArrayList<>();
        int i = 0;
        while(true){
            list.add(String.valueOf(i++).intern());
        }
    }
}
 
复制代码

由于PermSize在JDK 8.0已经被移除了

4). 本机直接内存溢出

/**
 *VM Args : -Xmx20m -XX:MaxDirectMemorySize=10M
 * */

public class DirectMemoryOOM {

    private static final int _1MB = 1024*1024;

    public static void main(String[] args) throws IllegalAccessException {
        Field unsafeField = Unsafe.class.getDeclaredFields()[0];
        unsafeField.setAccessible(true);
        Unsafe unsafe = (Unsafe)unsafeField.get(null);
        while (true){
            unsafe.allocateMemory(_1MB);
        }
    }

}
复制代码
13. 写一个SQL存储过程,建立一个表USER字段是姓名,年龄,入职时间(记录创建时间),然后向里面插入6条数据。第二步建立一个表WORK字段是姓名,职位,工号(按照入职顺序编码依次为link1,link2,link3...),请遍历USER表,按照入职时间的先后将对应的员工信息插入WORK表。
14. 假设字符串类似这样的aba和aab,abcd和acdb,caa和aac这样的字符串相等,现在随便给你两组字符串,请编程比较它们是否相等。
    public static boolean equals(String a,String b){
        byte[] arr1 = a.getBytes();
        byte[] arr2 = b.getBytes();
        Arrays.sort(arr1);
        Arrays.sort(arr2);
        return Arrays.equals(arr1,arr2);
    }

复制代码

     详细可参考: 假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等

一面

1. HTTP

1). 常见的网络协议有哪些?

2). 简述TCP的三次握手

3). 网络传输数据的格式有哪些?

4). Jason的数据类型有哪些?

5). JacksonJason和FastJason的区别有哪些?

2. Spring

1). Spring 和 Spring MVC的区别有哪些?

2). 常用的标注在类上的Spring标签有哪些?

3). Spring事务是如何配置的?

3. MySQL

1). 谈一下数据库连接池的相关配置有哪些?

2). 谈一下水平分表和垂直分表?

二面

1). Hive和Hbase的区别有哪些?

2). UTF-8和UTF-8mb4的区别有哪些?

更新时间

发布时间 : 2018年8月22

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值