面試日記——阿里巴巴JAVA面試

阿里的面試是最緊張的一場,也是最考驗技術(shù)的一場。
沒想到阿里的面試通知現(xiàn)在才收到,可以說是遲來的愛吧。
面試的遠程的面試,需要共享桌面,在線編程。
到官網(wǎng)上排隊,排了1個多小時,總算排到了。
面試我的是一個很年輕的阿里小哥,是架構(gòu)事業(yè)部的。

他主要問我以下幾個問題(為了共同的進步,我把答案也寫在問題下面,僅供參考)

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的底層實現(xiàn)

http://blog.csdn.net/njpjsoftdev/article/details/54015485

7. 數(shù)據(jù)庫MyISAM和InnoDB索引的儲存方式

http://www.cnblogs.com/renzherushe/p/4780226.html

8. redis的使用場景

http://blog.jobbole.com/88383/

9. redis如何清除過期數(shù)據(jù)

http://www.cnblogs.com/zhangchao-letv/articles/6119313.html

10. redis的主機選舉機制

http://www.tuicool.com/articles/yiEnUj

11. Treepmap和HsahMap的區(qū)別,底層實現(xiàn)

http://www.chinaitlab.com/Java/base/962510.html

12. JavaWeb中Filter使用的是哪種設(shè)計模式

過濾器模式
http://www.runoob.com/design-pattern/filter-pattern.html

13. IO包的輸入輸出流使用哪種設(shè)計模式

http://www.cnblogs.com/wxgblogs/p/5649933.html

14. 內(nèi)部類用哪種方式可以獲取

http://blog.csdn.net/qq_32198277/article/details/72593825

15. 編程實現(xiàn)裝飾器模式

http://www.runoob.com/design-pattern/decorator-pattern.html

16. 編程實現(xiàn)菜單層級(最多三層)

當時沒做出來,現(xiàn)在用最簡單的方式來實現(xiàn)
思路是用map來記錄選過的,用兩個list來記錄上次選剩下的和沒有選的(其實可以用一個List加迭代器就行)
因為最多三層,所以最多用3個for循環(huán)就好

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,表示已經(jīng)被選過
                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();
    }
}

這次面試雖然是視頻面試但畢竟是阿里的面試,所以難度還真不小,導致我太緊張,最后一題編程題非常簡單也沒做出來,如果你們有更好的答案也可以在評論區(qū)留言,一起加油。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在此特此聲明:一下所有鏈接均來自互聯(lián)網(wǎng),在此記錄下我的查閱學習歷程,感謝各位原創(chuàng)作者的無私奉獻 ! 技術(shù)一點一點積...
    遠航的移動開發(fā)歷程閱讀 11,528評論 12 197
  • 已經(jīng)記不清吵了多少回了,星期六我的的一句心涼了,吵鬧了一天,下午她的出走,讓我有些莫名的傷感,情不知何時起...
    呵呵一笑銘乾坤閱讀 409評論 0 1
  • 文/拓懶懶 你有想念的人嗎? 你們分開多久了? 上海今天又是雨天,空氣中都透露著些許潮濕,空氣好像變得清透了一些,...
    拓懶懶閱讀 681評論 0 0
  • 在心理學中,我們來談?wù)?躁動心靈的那些事 可能因為我們生活在這個傳統(tǒng)的中華大國,性教育,愛情,戀愛,可能很少也可以...
    涂松不翊閱讀 441評論 0 1

友情鏈接更多精彩內(nèi)容