面试日记——阿里巴巴JAVA面试
来源:互联网 发布:by什么意思网络用语 编辑:程序博客网 时间:2024/06/08 20:09
阿里的面试是最紧张的一场,也是最考验技术的一场。
没想到阿里的面试通知现在才收到,可以说是迟来的爱吧。
面试的远程的面试,需要共享桌面,在线编程。
到官网上排队,排了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(); }}
这次面试虽然是视频面试但毕竟是阿里的面试,所以难度还真不小,导致我太紧张,最后一题编程题非常简单也没做出来,如果你们有更好的答案也可以在评论区留言,一起加油。
- 面试日记——阿里巴巴JAVA面试
- [Java--面试]--阿里巴巴面试2016
- 阿里巴巴Java面试题目
- 阿里巴巴Java岗面试经验
- 阿里巴巴JAVA电话面试-一面
- 阿里巴巴面试——重男轻女概率题
- 阿里巴巴面试
- 阿里巴巴面试
- 阿里巴巴面试
- 面试 阿里巴巴
- 面试日记——2017腾讯暑假后台实习面试
- 工作室日记——QG面试
- android面试日记——20160620
- 面试日记
- 阿里巴巴java研发成功笔面试总结
- 2015阿里巴巴春季Java实习生面试经验
- 阿里巴巴java研发工程师面试经历分享
- 阿里巴巴JAVA电话面试-二面
- Example: Getting WMI Data from a Remote Computer
- 【数据结构】一些书上的基本概念
- 用python处理Excel文档(2)——用xlsxwriter模块写xls/xlsx文档
- Android用surface直接显示yuv数据(二)
- ADB server did not ACK
- 面试日记——阿里巴巴JAVA面试
- 数字货币开发专题(钱包开发的原理是什么)
- 【软考】软件工程-软件过程模型
- C++排序算法之插入排序
- 深度学习Caffe实战笔记(20)Windows平台 Faster-RCNN 训练自己的数据集
- Android 5.x SEAndroid/SElinux内核节点的读写权限
- JS入门基础
- [个人电脑阿里云maven配置 纯小白参考]
- 在初学php时用到的一些问题以及解决办法