前言
自如
面试内容
笔试
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