📌  相关文章
📜  OSS系统开发和支持专家的Maxis面试经验

📅  最后修改于: 2021-11-18 01:23:59             🧑  作者: Mango

第 1 轮(项目经理讨论 30 分钟):这一轮包括与项目经理的讨论,他想了解候选人在该项目中的背景、解决问题的能力和经验,他将为此聘请.这只是一个熟悉的讨论,如果他认为候选人适合这个职位,他会在进入第二轮之前收集有用的信息。

Round 2 (Live Coding Challenge 60min):本轮包括编码挑战,包括错误修复、缺失代码、 Java组件信息等。它将在 Maxis 平台上实时完成,与 Hacker Rank 相同,但 Maxis有它自己的。这将是一个活生生的记录会议。但是,在本次会议之前,候选人将收到一封电子邮件,其中包含将提出的问题类型。下面是一个示例:

编码测试指南和问题:我们邀请申请人放松并享受解决基于日常工作经验的Java问题,并分享有关角色和职责的信息。强烈鼓励使用Java 8 版本或最著名的方法来解决这些挑战。共有 10 道问题需要回答。

  1. 斐波那契数列

    Given method call is : Fibonacci(0, 1, 10, 1)
    Print first 10 numbers in Fibonacci series : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34

    用一行代码替换第 8 行。

    提示: Java中的递归是一个方法不断调用自身的过程

    Java
    public static void fibonacci(int num1, int num2, int limit, int count) {
      
        int total = num1 + num2;
      
        if (count <= limit) {
      
            System.out.print(num1 + " ");
      
            num1 = num2;
      
            num2 = total;
      
            count = count + 1;
      
            // Write one line of code to complete fibonacci 
            // series - Hint : Use recursion      
      
        } else {
      
            return;
      
        }
      
    }


    Java
    public static List < Integer > removeValue(int number) {
      
        List < Integer > list = new ArrayList < > ();
      
        list.add(1);
      
        list.add(2);
      
        list.add(3);
      
        Iterator < Integer > it = list.iterator();
      
        while (it.hasNext()) {
      
            Integer value = it.next();
      
            System.out.println("List Value:" + value);
      
            if (value.equals(number)) {
      
                list.remove(value);
      
            }
      
        }
      
        return list;
      
    }


    Java
    public class Test1 extends Thread {
      
        public static void main(String[] args) {
      
            Test1 t1 = new Test1();
      
            t1.setPriority(12);
      
            //Make this a daemon thread  
      
        }
      
    }


    Java
    public static void sortAndReverseList(List < String > countriesList) {
      
        //Sort list
      
        //Reverse list
      
    }


    Java
    public static void testSet() {
      
        List < String > fruits = new ArrayList < String > ();
      
        fruits.add("Apple");
      
        fruits.add("Mango");
      
        fruits.add("Guava");
      
        fruits.add("Mango");
      
        Set < String > fruitSet = new HashSet < > (fruits);
      
        System.out.println(fruitSet); //Predict Output :
      
        fruitSet = new TreeSet < > (fruits);
      
        System.out.println(fruitSet); //Predict Output :  
      
    }


    Java
    class Singleton
      
    {
      
        private volatile static Singleton obj;
      
        private Singleton() {}
      
        public static Singleton getInstance()
      
        {
      
            if (obj == null) {
      
                synchronized(Singleton.class) {
      
                    if (obj == null) {
      
                        obj = new Singleton();
      
                    }
      
                }
      
                return obj;
      
            }
      
        }


    Java
    public void sortUsers() {
      
        User user1 = new User("Ben", 1);
      
        User user2 = new User("Anna", 2);
      
        User user3 = new User("Madonna", 3);
      
        User user4 = new User("Siri", 4);
      
        List < User > users = new ArrayList < > ();
      
        users.add(user1);
      
        users.add(user2);
      
        users.add(user3);
      
        users.add(user4);
      
        // Complete code to compare by the first name
        // and then the last name  
      
        System.out.println("Sorted users list " + sortedList);
      
    }


  2. 修正以下程序

    • 在以下场景中您期望什么异常?
    • 在 Hashmaps 中使用的最佳集合以避免此异常。
    • 通过替换第 7-13 行来更正程序,以从给定的“整数”列表中删除“数字”。鉴于 input=3,请解释您修复代码的方法。

    Java

    public static List < Integer > removeValue(int number) {
      
        List < Integer > list = new ArrayList < > ();
      
        list.add(1);
      
        list.add(2);
      
        list.add(3);
      
        Iterator < Integer > it = list.iterator();
      
        while (it.hasNext()) {
      
            Integer value = it.next();
      
            System.out.println("List Value:" + value);
      
            if (value.equals(number)) {
      
                list.remove(value);
      
            }
      
        }
      
        return list;
      
    }
    
  3. 评估以下程序的输出并设置守护线程

    • 什么是线程优先级?什么是最大线程优先级?
    • 编写线程的不同方法。
    • 什么是守护线程?
    • 更正以下程序并使 t1 成为守护线程。

    Java

    public class Test1 extends Thread {
      
        public static void main(String[] args) {
      
            Test1 t1 = new Test1();
      
            t1.setPriority(12);
      
            //Make this a daemon thread  
      
        }
      
    }
    
  4. 对字符串列表进行排序和反转

    • 完成第 2,3 行以对国家/地区列表进行排序和反转。提示:您可以使用集合 API。对国家列表进行排序和反转。

    Java

    public static void sortAndReverseList(List < String > countriesList) {
      
        //Sort list
      
        //Reverse list
      
    }
    
  5. 评估以下程序的输出

    • 定义集
    • 预测第 8、10 行的输出。

    Java

    public static void testSet() {
      
        List < String > fruits = new ArrayList < String > ();
      
        fruits.add("Apple");
      
        fruits.add("Mango");
      
        fruits.add("Guava");
      
        fruits.add("Mango");
      
        Set < String > fruitSet = new HashSet < > (fruits);
      
        System.out.println(fruitSet); //Predict Output :
      
        fruitSet = new TreeSet < > (fruits);
      
        System.out.println(fruitSet); //Predict Output :  
      
    }
    
  6. 设计模式

    • 列出一些您可能使用过的Java设计模式。
    • 定义单例模式并解释突出显示的代码行。

    Java

    class Singleton
      
    {
      
        private volatile static Singleton obj;
      
        private Singleton() {}
      
        public static Singleton getInstance()
      
        {
      
            if (obj == null) {
      
                synchronized(Singleton.class) {
      
                    if (obj == null) {
      
                        obj = new Singleton();
      
                    }
      
                }
      
                return obj;
      
            }
      
        }
    
  7. Java8

    • 列出Java 8 的一些新特性。
    • 你能写一个示例 lambda 表达式来流式传输任何集合吗?
  8. 用Java 8解释比较器和用法

    • 解释比较器
    • 完成以下程序,首先按用户名对用户列表进行排序,然后用户 ID 给用户类有字段用户名、用户 ID。

    Java

    public void sortUsers() {
      
        User user1 = new User("Ben", 1);
      
        User user2 = new User("Anna", 2);
      
        User user3 = new User("Madonna", 3);
      
        User user4 = new User("Siri", 4);
      
        List < User > users = new ArrayList < > ();
      
        users.add(user1);
      
        users.add(user2);
      
        users.add(user3);
      
        users.add(user4);
      
        // Complete code to compare by the first name
        // and then the last name  
      
        System.out.println("Sorted users list " + sortedList);
      
    }
    
  9. &Spring MVC 和 Spring 微服务特性

    • 列出 Spring MVC 和微服务的一些特性。
    • 你有 Spring 微服务开发的经验吗?
    • 在部署和发布方面,微服务如何比部署一个更好的
    • Spring MVC项目在生产环境中像tomcat这样的服务器上运行?
  10. 技能

    • 请解释以下与您的工作相关的技能以及对主题列表的简要说明。
    • Git 代码库和 Gerrit 代码审查。
    • Maven 构建工具。
    • ORM 经验:Hibernate、Spring JDBC 模板。
    • 云计算经验。
    • PL/SQL 编码和 SQL 查询编写经验。
    • Unix/Linux 技能和经验。
    • 申请人可以灵活地学习和适应动态的工作环境。

编码最佳实践:

  • 方法的命名约定,变量要有驼峰式大小写,包命名,编码注释。
  • 在代码中设计接口或抽象设计模式应用程序。
  • 同行评审代码和代码评审经验。
  • 测试用例编写和代码质量工具,如 sonarqube。

第三轮(HR 30min):第三轮是人力资源轮,讨论薪资和一些技术问题等。

第 4 轮(CEO 30 分钟):最后一轮是 CEO 或公司的任何更高权力机构与候选人讨论未来计划,以及候选人如何为公司带来好处。