网易互娱面筋

我是学java的,但是面试官似乎是C++,并没有很多设计java方面的知识。
全程基本都是数据结构、算法、计算机网络等
1.算法:求区间合并。类似 给定 n 个区间 [li,ri],求合并后区间
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
(用的C++函数,我换成java的实现了)
class Interval {
    int start, end;

    Interval(int start, int end) {
        this.start = start;
        this.end = end;
    }
}

/**
 * @author wangyifan
 */
public class Main {
    public static List<Interval> merge(List<Interval> intervals) {
        List<Interval> ans = new ArrayList<>();
        if (intervals.size() == 0) {
            return intervals;
        }

        //思路1:先将左半边的数据进行从小到大,排序。
        for (int i = 0; i < intervals.size(); i++) {
            for (int j = i + 1; j < intervals.size(); j++) {
                if (intervals.get(i).start > intervals.get(j).start) {
                    Interval tem = intervals.get(i);
                    intervals.set(i, intervals.get(j));
                    intervals.set(j, tem);
                }
            }
        }

        //从小到大遍历,从最前面开始
        int min = intervals.get(0).start;
        int max = intervals.get(0).end;
        for (int i = 1; i < intervals.size(); i++) {
            //intervals.get(i).start <= max,就进行区间,重叠即合并区间
            if (intervals.get(i).start <= max) {
                //取大
                max = Math.max(intervals.get(i).end, max);
            } else {
                //否则标识此区间结束,新建立一个区间
                ans.add(new Interval(min, max));
                min = intervals.get(i).start;
                max = intervals.get(i).end;
            }
        }
        ans.add(new Interval(min, max));
        return ans;
    }
}


2.你怎么定义什么是线程安全?
妈呀好抽象、答的不好

3、生产者消费者模型。例如消费者取数据,怎么保证安全?加锁,通知?PV操作?吧啦吧啦。

4、进程与线程的区别。

5、进程间通讯的方式、进程调度方式
后面那个题最搞笑,我说我忘了,调度方式只记得一个轮询,高一学的。面试官:高一,你学的好真早(笑声)。我连忙解释大一

6、了解RPC吗?PRC是怎么样的一个过程。

7、计算机网络 三次握手
我说完后他问我发起一个连接怎么发?提示首先建一个socket,这题没答上来

8、输入一个网站结果哪些过程

9、说一下快速排序的思想、说一下堆排序的思想。

10、A*算法,
10.1、解释算法怎么实现。
这个我是最吃惊的,没想到会问这个。
10.2 、如果我不是1*1的单元格,是2*2怎么做。
我不会,面试官说可以把每个单元格都换成2*2的

11、单例设计模式,手撕。
public class SingleTon {
    volatile private static SingleTon singleTon = null;
    private SingleTon(){
        System.out.println("实例化1次");
    }

    public static SingleTon getInstance(){
        /**
         *解释:当A与B同时调用getSingleton时,判断第一个if都为空,这时A拿到锁,进行第二层if判断,条件成立new了一个对象;

         B在外层等待,A创建完成,释放锁,B拿到锁,进行第二层if判断,条件不成立,结束释放锁。C调用getSingleton时第一层判断不成立,直接拿到singleton对象返回,避免进入锁,减少性能开销。
         ————————————————
         版权声明:本文为CSDN博主「小韩同志」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
         原文链接:https://blog.csdn.net/jlnu0812407/article/details/102836187
        */
        if (singleTon == null){
            synchronized (SingleTon.class){
                if (singleTon == null) {
                    singleTon = new SingleTon();
                }
            }
        }
        return singleTon;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 2; i++) {
            new Thread(() -> {
                SingleTon.getInstance();
            }, String.valueOf(i)).start();
        }
    }
}


12、让我手撕写图的遍历,我确实没记,我说我不会。
提到最短路径算法,我也不会

13、我说我可以写数的遍历吗,行。
import java.util.Stack;

/**
 * @Description: 非递归压栈,实现深度优先遍历
*/
public class Soultion2 {
    public static void dfsWithStack(Node root){
        if (root == null) {
            return;
        }
        Stack<Node> stack = new Stack<>();

        stack.push(root);
        while (!stack.isEmpty()){
            Node treeNode = stack.pop();
            /**
             * @Description: 处理当前节点
            */
            System.out.println(treeNode.value);
            if (treeNode.right != null) {
                stack.push(treeNode.right);
            }
            if (treeNode.left != null) {
                stack.push(treeNode.left);
            }
        }
    }
}

14、场景题目:用户改名字、给新名字和旧名字两个字符串。根据改动名字的多少收费。
我的思路:字符串窗口滑动
思路二:用KMP算法比较新名字是不是包含旧名字,KMP?真的适用吗?吧啦吧啦。。。kmp时间复杂度?

15、深入拷贝与浅拷贝,有啥区别?
我没说到要点,面试官提示:深拷贝出来的对象和浅拷贝出来的对象,我对他们的改变有什么不一样?
说一下深浅拷贝各自的使用场景

#面经##校招##网易##Java工程师#
全部评论
我今早上跟你面的差不多,我面的是互娱的游戏开发。C++,出的门面试题也是跟你一样的。
2 回复 分享
发布于 2020-08-21 13:15
请问一下,你也是面试的初级游戏开发吗,最后面试官有没有说谢谢你参加网易面试,最后有反问吗
点赞 回复 分享
发布于 2020-08-21 12:39
楼主你好,请问你是实习、校招还是社招?岗位是什么?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复 分享
发布于 2020-08-21 12:40
楼主,请问第十问的算法是什么
点赞 回复 分享
发布于 2020-08-21 13:06
一样的合并区间,一样的障碍物,不过问的是岛屿数量
点赞 回复 分享
发布于 2020-08-21 14:22
收到下一面通知,说一声
点赞 回复 分享
发布于 2020-08-25 00:14

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
评论
3
24
分享
牛客网
牛客企业服务