一直提不起来精神准备面试,推了2个月实在不好意思继续推了就裸面了。国人小哥非常友好,说公司规定面试前不能谈candidate的背景,以防产生偏见。 但是面试进行得比较快,所以剩了半个小时,聊了一下彼此的项目,虽然不知道结果如何,整体感觉对于老码农还是很友善的。祝大家都能顺利通过面试
// Build a queue class with the enqueue and dequeue methods. The queue can store an *UNLIMITED* number of elements but you are limited to using arrays that can store up to 5 elements max.
// 1. Dequeue 1, will throw exception
// 2. Enqueue 1, Dequeue 1 time
// 3. Enqueue 7, Dequeue 7 times
// 4. Enqueue 7, Dequeue 8 times, will throw exception
// 5. Enqueue 4, Dequeue 4 times
// 6. Enqueue 5, Dequeue 5 times
// 7. Enqueue 4, Dequeue 4 times, Enqueue 1, Dequeue 1 time
// 8. Enqueue 5, Dequeue 5 times, Enqueue 3, Dequeue 3 times
// 9. Enqueue 7, Dequeue 3 times, Enqueue 3, Dequeue 8 times, will throw exception
import java.io.*;
import java.util.*;
/* * To execute Java, please define "static void main" on a class * named Solution.
* * If you need more classes, simply define them inline.
*/
class Solution {
private static final int BUCKET_SIZE = 5;
private int header;
private int tail;
private LinkedList<Integer[]> data;
public Solution() {
data = new LinkedList<>();
}
public boolean enqueue(int element) {
if(data.size() == 0) {
data.add(new Integer[BUCKET_SIZE]);
}
data.get(data.size() - 1)[tail] = element;
tail++;
if(tail >= BUCKET_SIZE) {
data.add(new Integer[BUCKET_SIZE]);
tail = 0;
}
return true;
}
public int dequeue() throws IllegalArgumentException {
if(runOutElement()) {
throw new IllegalArgumentException();
}
int result = data.get(0)[header];
header++;
if(header >= BUCKET_SIZE) {
data.remove(0);
header = 0;
}
return result;
}
private boolean runOutElement() {
if(data.size() == 0) {
return true;
}
if(data.size() == 1 && tail == 0) {
return true;
}
if(data.size() == 1 && tail == header) {
return true;
}
return false;
}
public static void main(String[] args) {
Solution solution = new Solution();
for(int index = 0; index < 7; index++) {
solution.enqueue(index);
}
for(int index = 0; index < 3; index++) {
System.out.println(solution.dequeue());
}
for(int index = 0; index < 3; index++) {
solution.enqueue(index);
}
for(int index = 0; index < 8; index++) {
System.out.println(solution.dequeue());
}
}
}