小米面经

小米 java开发工程师一面
主要是问了三个问题
1. jvm类加载机制,方法调用(这个是我自己项目中的问题)
2. AOP原理,自己实现AOP的逻辑
3. 链表合并去重,  这个问题当时脑子坏啦, 当时括号太多啦, 写代码的时候括号作用域写错啦。 最后找了半天原来括号范围错啦。
import java.util.Scanner;

public class Main {
    static class ListNode {
        int val;
        ListNode next;

        public ListNode(int val) {
            this.val = val;
            this.next = null;
        }
    }

    public static void main(String[] args) {
        ListNode root1 = new ListNode(1);
        ListNode root11 = new ListNode(3);
        ListNode root12 = new ListNode(5);
        ListNode root13 = new ListNode(7);
        root1.next = root11;
        root11.next = root12;
        root12.next = root13;
        ListNode root2 = new ListNode(2);
        ListNode root21 = new ListNode(3);
        ListNode root22 = new ListNode(6);
        ListNode root23 = new ListNode(8);
        root2.next = root21;
        root21.next = root22;
        root22.next = root23;
        ListNode nroot = null, nhead = null;
        ListNode nroot1 = null, nroot2 = null;
        while (root2 != null && root1 != null) {
            if (root2.val > root1.val) {
                nroot1 = root1.next;
                root1.next = null;
                if (nroot == null) {
                    nhead = nroot = root1;
                } else if (nroot.val != root1.val) {
                    nroot.next = root1;
                    nroot = root1;
                }
                root1 = nroot1;
            } else if (root1.val >= root2.val) {
                nroot2 = root2.next;
                root2.next = null;
                if (nroot == null) {
                    nhead = nroot = root2;
                } else if (nroot.val != root2.val) {
                    nroot.next = root2;
                    nroot = root2;
                }
                root2 = nroot2;
            }


        }

        while (root1 != null) {
            if (nroot == null) {
                nroot1 = root1.next;
                root1.next = null;
                nroot = nhead = root1;
                root1 = nroot1;
            } else if (nroot.val == root1.val) {
                root1 = root1.next;
            } else {
                nroot1 = root1.next;
                root1.next = null;
                nroot.next = root1;
                nroot = root1;
                root1 = nroot1;
            }
        }
        while (root2 != null) {

            if (nroot != null) {
                nroot2 = root2.next;
                root2.next = null;
                nroot = nhead = root2;
                root2 = nroot2;
            } else if (nroot.val == root2.val) {
                root2 = root2.next;
            } else {
                nroot2 = root2.next;
                root2.next = null;
                nroot.next = root2;
                nroot = root2;
                root2 = nroot2;
            }
        }
 while (nhead != null) {
           System.out.println(nhead.val);  nhead = nhead.next; }
}


对于第三题当时想直接用LinkedHashSet, 面试官说, 你敢用我直接给你挂。。。。。。。。
总体来说不难,还是自己太菜啦。 离开idea不会写代码啦。 老是写的有点问题。

#面经##Java工程师##校招##小米#
全部评论
链表合并去重是啥意思?😳连题目都没看懂
1 回复 分享
发布于 2019-09-10 12:25
你敢用就直接挂你😂😂😂
点赞 回复 分享
发布于 2019-09-10 12:55
LinkedHashSet 太骚了🤣
点赞 回复 分享
发布于 2019-09-10 12:30
用一个hashmap存次数 用一个链表合并数据?
点赞 回复 分享
发布于 2019-09-10 12:29
我问了一堆问题😂
点赞 回复 分享
发布于 2019-09-10 12:23

相关推荐

04-21 11:22
已编辑
中华女子学院 UE4
耐心学习_佩可officical:直接举报他,佬,违反劳动法我记得boss会下架
点赞 评论 收藏
分享
评论
1
29
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务