面试日记——阿里巴巴JAVA面试
2018-03-17 09:03
441 查看
面试日记——阿里巴巴JAVA面试
阿里的面试是最紧张的一场,也是最考验技术的一场。 没想到阿里的面试通知现在才收到,可以说是迟来的爱吧。
面试的远程的面试,需要共享桌面,在线编程。
到官网上排队,排了1个多小时,总算排到了。
面试我的是一个很年轻的阿里小哥,是架构事业部的。
他主要问我以下几个问题(为了共同的进步,我把答案也写在问题下面,仅供参考)
1. jvm模型
http://www.cnblogs.com/AloneSword/p/4262255.html
2. 类加载器
http://blog.csdn.net/gjanyanlig/article/details/6818655/
3. 垃圾回收分类
http://www.cnblogs.com/davenkin/p/java-garbage-collection.html
4. 查看垃圾回收的命令
http://www.cnblogs.com/wozixiaoyao/p/5658952.html
5. 线程同步的多种方式
http://blog.csdn.net/cengjingyige/article/details/52382300
6. Lucene的底层实现
http://blog.csdn.net/njpjsoftdev/article/details/54015485
7. 数据库MyISAM和InnoDB索引的储存方式
http://www.cnblogs.com/renzherushe/p/4780226.html
8. redis的使用场景
http://blog.jobbole.com/88383/
9. redis如何清除过期数据
http://www.cnblogs.com/zhangchao-letv/articles/6119313.html
10. redis的主机选举机制
http://www.tuicool.com/articles/yiEnUj
11. Treepmap和HsahMap的区别,底层实现
http://www.chinaitlab.com/Java/base/962510.html
12. JavaWeb中Filter使用的是哪种设计模式
过滤器模式 http://www.runoob.com/design-pattern/filter-pattern.html
13. IO包的输入输出流使用哪种设计模式
http://www.cnblogs.com/wxgblogs/p/5649933.html
14. 内部类用哪种方式可以获取
http://blog.csdn.net/qq_32198277/article/details/72593825
15. 编程实现装饰器模式
http://www.runoob.com/design-pattern/decorator-pattern.html
16. 编程实现菜单层级(最多三层)
当时没做出来,现在用最简单的方式来实现 思路是用map来记录选过的,用两个list来记录上次选剩下的和没有选的(其实可以用一个List加迭代器就行)
因为最多三层,所以最多用3个for循环就好
import java.util.*; public class Main { class Menu{ private int id; private String name; private int pId; public Menu(int id, String name, int pId) { this.id = id; this.name = name; this.pId = pId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getpId() { return pId; } public void setpId(int pId) { this.pId = pId; } } class Result{ private Menu menu; private List<Result>menus=new ArrayList<>(); public Menu getMenu() { return menu; } public void setMenu(Menu menu) { this.menu = menu; } public List<Result> getMenus() { return menus; } public void setMenus(List<Result> menus) { this.menus = menus; } } public void test(){ List<Menu> menuList=new ArrayList<>(); Menu menu1=new Menu(1,"1",0); Menu menu2=new Menu(2,"2",1); Menu menu3=new Menu(4,"4",1); Menu menu4=new Menu(3,"3",2); Menu menu5=new Menu(5,"5",2); Menu menu6=new Menu(6,"6",2); menuList.add(menu4); menuList.add(menu1); menuList.add(menu2); menuList.add(menu3); menuList.add(menu5); menuList.add(menu6); List<Menu> menuList2=new ArrayList<>(menuList); Map<Integer,Result> resultMap=new HashMap<Integer,Result>(); List<Result>results=new ArrayList<Result>(); //先找第一层的 for (Menu menu:menuList){ if (menu.getpId()==0){ Result result=new Result(); result.setMenu(menu); //放进map,表示已经被选过 resultMap.put(menu.getId(),result); results.add(result); //移除选过的 menuList2.remove(menu); } } //menuList和menuList2身份互换 menuList.clear(); menuList.addAll(menuList2); //扫描找到第二层或第三层的 for (Menu menu:menuList2){ Result result=resultMap.get(menu.getpId()); if (result!=null){ Result result1=new Result(); result1.setMenu(menu); resultMap.put(menu.getId(),result1); result.getMenus().add(result1); menuList.remove(menu); } } //menuList和menuList2身份互换 //扫描找到第三层剩下的 for (Menu menu:menuList){ Result result=resultMap.get(menu.getpId()); if (result!=null){ Result result1=new Result(); result1.setMenu(menu); result.getMenus().add(result1); resultMap.put(menu.getId(),result1); } } } public static void main(String[] args) { Main main=new Main(); main.test(); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
这次面试虽然是视频面试但毕竟是阿里的面试,所以难度还真不小,导致我太紧张,最后一题编程题非常简单也没做出来,如果你们有更好的答案也可以在评论区留言,一起加油。
相关文章推荐
- 阿里巴巴JAVA电话面试-一面
- 2016/5/19阿里巴巴Java暑假实习面试记录--武汉专场
- 2018阿里巴巴校园内推电话面试-java后台方向
- 阿里巴巴Java面试题目
- 2015阿里巴巴春季Java实习生面试经验
- 阿里巴巴Java岗面试经验
- 阿里巴巴JAVA电话面试-二面
- 面试日记——阿里巴巴JAVA面试
- 阿里巴巴常考面试题及汇总答案 java面试
- 阿里巴巴Java开发工程师第一轮面试的8个问题,你知道几个?
- 【应聘】阿里巴巴Java面试题目
- Java程序员是如何面试上阿里巴巴,如何拿到年薪50W
- 阿里巴巴java研发工程师面试经历分享
- [Java--面试]--阿里巴巴面试2016
- 阿里巴巴2015年春季校招_研发工程师JAVA_师面试总结
- 阿里巴巴Java程序员面试的11个题目,网友:居然一个都不会!
- 2018阿里巴巴java研发实习生电话面试第一轮
- 阿里巴巴Java程序员面试的11个题目,网友:居然一个都不会!
- 阿里巴巴面试java研发工程师实录
- java程序员阿里面试通过后总结:你会这些,你也能去阿里巴巴