在笔试中经常会遇到很多需要手写代码的题,如果能完整的写出来最好,但如果不习惯手写或时间不够,可已选择写伪码,主要描述清楚关键的实现步骤。
笔试
写出
Collection
接口的实现Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
运行时获取
class
的磁盘路径1
<YOUR CLASS>.class.getProtectionDomain().getCodeSource().getSource().getLocation()
Java多态的表现形式,代码如何实现
重写
Overriding
是父类与子类之间多态性的一种表现,重载Overloading
是一个类中多态性的一种表现;不同的对象调用同一个方法的到不同的结果。继承父类
重写父类方法
向上转型
在工作中遇到或使用过的设计模式,手写实现一个设计模式(除了单例模式)
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。具体实现代码
手写代码,实现多线程对一整型对象递增,且数值不重复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24public class Test {
private static int num = 1;
public static void main(String[] args) {
Test test = new Test();
Increasing inc = test.new Increasing();
for (int i=0;i<=10;i++){
Thread thread=new Thread(inc);
thread.start();
}
}
private synchronized void add(){
num+=1;
System.out.println(num);
}
class Increasing implements Runnable{
public void run(){
for(int i=0;i<20;i++){
add();
}
}
}
}
快速获得数组
int[] a = {1,2, 3, 5, 6, 12, 4, 7, 14, 9, 8}
中第二大的数,写出关键代码下面代码的时间复杂度为O(n),不一定是最快的,但只需遍历一次
1
2
3
4
5
6
7
8
9
10
11
12
13public static int getSecondMax(int[] a) {
int max = a[0];
int second = a[a.length - 1];
for (int i = 0; i < a.length; i++) {
if (a[i] > max) {
second = max;
max = a[i];
} else if (a[i] > second && a[i] < max) {
second = a[i];
}
}
return second;
}进程和线程的区别和联系?
进程 - 操作系统分配内存的基本单位 - 一个进程可以包含一个或多个线程
线程 - 操作系统分配CPU的基本单位
面试
- 在之前项目中遇到什么问题,怎么解决。
- mysql分页语句。
- 线程同步有哪几种方式。
- eclipse的中查找类被调用的快捷键是什么。