腾讯PCG 不知道是第几面的面经

这次的面试安排原因可以看我在上一篇面经里面写到的
上次的面经在这里
面试时间:25 号下午 2.30

开始

做完自我介绍之后就开始问项目
先让我介绍一遍项目
小程序,移动端,后管系统,硬件交互全都是在一个服务里面?为什么这样做?
介绍项目怎么分层的?怎么部署的?
开发过程中遇到了什么问题?怎么解决的?
然后让我说了我负责的模块比较有挑战的模块

基础

1.说说 JVM 五大分区,然后问我是不是必须分 5 个?
我说不是,HotSpot 的栈区只有一个,然后没有永久代
2.然后又问了一下我自己对 SpringBoot 的理解
这里尴尬的事情就来了,我用的校园网,卡的一批,面试官说我再说什么他听不太清楚,不过大概懂我意思了。
还有更尴尬的...
同一层楼正在装修,面试官说你到底在哪儿面试的?
我:阿巴阿巴阿巴,太惨了呜呜呜呜
然后面试官说既然这样那就不问你问题了吧
我们做两道题热一下身体

算法

面试官啪的一下打出一道题

反转二叉树

我笑一下,很快啊
我直接写了个递归还有一个队列递推
代码放在这里

public class Main {
    public static void main(String[] args) {
        Main m = new Main();
        TreeNode treeNode = new TreeNode(1);
        TreeNode treeNode1 = new TreeNode(2);
        TreeNode treeNode2 = new TreeNode(3);
        treeNode.left = treeNode1;
        treeNode.right = treeNode2;

        m.reverseTreeNode(treeNode);
        ArrayList<Integer> res = new ArrayList<>();
        m.preOrder(treeNode, res);
        res.forEach(System.out::println);

        m.reverseTreeNodeByDeque(treeNode);
        ArrayList<Integer> res1 = new ArrayList<>();
        m.preOrder(treeNode, res1);
        res1.forEach(System.out::println);


    }

    public void preOrder(TreeNode root,List<Integer> res){
        if(root == null){
            return;
        }
        preOrder(root.left, res);
        res.add(root.val);
        preOrder(root.right, res);
    }

    // 递归
    public void reverseTreeNode(TreeNode root){
        if(root ==null){
            return;
        }
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        reverseTreeNode(root.left);
        reverseTreeNode(root.right);
    }

     public void reverseTreeNodeByDeque(TreeNode root){
        if(root==null){
            return;
        }
        Deque<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            TreeNode pop = queue.pop();
            TreeNode temp =  pop.left;
            pop.left = pop.right;
            pop.right = temp;
            if(pop.left!=null){
                queue.add(pop.left);
            }
            if(pop.right!=null){
                queue.add(pop.right);
            }
        }
     }

   static class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;

        public TreeNode(int val){
            this.val = val;
        }
    }

PS:以上所有的代码都要自己写,包括二叉树节点定义

写代码的时候我掉线了但是我不知道,呜呜呜呜
图片说明

然后面试官又打出一道股票买卖

好家伙,还是最简单的那一道
很快啊
直接写了个 dp 方程出来
写了个状态压缩之后的 dp
问他还写么?他说停停
问我还有没有其他解法?
我又写了一个一次遍历,每天买每天卖的方法
他看了一会儿他说我这个还行
他又问我还有没有其他的解法,我说我只想到这两种,他说这个贪心应该也行
我当时说了一句贪心应该做不了吧
不好处理收入缓慢上升的情况
他说他猜的
然后他又说要是现在加一个条件,交易次数只能是 K 次呢?
然后又是写了个 dp 方程,这次没写代码了,他看了方程之后说没问题
他那边就说没啥问题了

最后

他问我在重庆怎么去深圳实习?
你是 Java,但是我们这边都是用 Go,你打算怎么办?

反问?

这次到底是第几面?
答:不清楚...
后面还有没有面试?
答:可能有也可能没有,有些人会加面,有些人直通..
那个部门?
结果等多久?
你觉得我有什么地方需要提高的?
搞笑的来了,他说麦克风质量需要提高,网络质量需要提高,面试环境需要提高,其他的都可以了。
呜呜呜呜呜呜

总结

这次面试我感觉除了我面试环境的影响,因该是最简单的一次面试了吧,希望 Tencent 不要再搞什么幺蛾子了...

#实习##面经##Java工程师##腾讯#
全部评论
这个不难啊。。
2 回复 分享
发布于 2020-12-25 23:56
请问是PCG那个部门啊
点赞 回复 分享
发布于 2021-01-08 16:29

相关推荐

生成器函数(Generator&nbsp;function)是一种特殊的函数,它可以在函数执行过程中暂停和恢复。它使用一种特殊的语法来定义函数,即在函数名前加上一个星号&nbsp;*。生成器函数可以通过&nbsp;yield&nbsp;关键字来定义一个或多个可以被暂停和恢复执行的点。每次调用生成器函数时,它都会返回一个称为生成器(Generator)的对象。通过调用生成器对象的&nbsp;next()&nbsp;方法,可以逐步执行生成器函数中的代码,并在每个&nbsp;yield&nbsp;关键字处暂停执行,并返回一个具有当前状态的对象。生成器函数的用途之一是实现可迭代对象和迭代器。可迭代对象是指具有可以迭代的特性,比如数组、字符串和&nbsp;Set&nbsp;等。通过在生成器函数中使用&nbsp;yield&nbsp;关键字,可以逐个产生可迭代对象的元素,而无须一次性生成所有元素,从而节省内存和提高效率。另一个用途是处理异步操作。生成器函数与&nbsp;yield&nbsp;结合使用可以实现异步操作的顺序控制。通过将异步操作封装在生成器函数中,并在适当的地方使用&nbsp;yield&nbsp;暂停执行,就可以在异步操作完成后再恢复生成器函数的执行。这种方式可以避免回调函数或复杂的异步处理逻辑,使异步代码看起来更像同步代码。下面是一个使用生成器函数的示例:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;uuid=4e87f2c39cab4f9da3226af76ad6a224
点赞 评论 收藏
分享
09-20 08:08
中南大学 Java
lemonlemon777:本来就是这样。在公司老板多少要掂量下劳动法。在学校,导师就是你的奴隶主,一手遮天。理工科牛马硕士遇到个pua导师,在进入工作后会觉得怎么那么好?干活还有钱拿?干的不爽可以换工作?原来还有法定节假日啊?重遇双休?
点赞 评论 收藏
分享
6 21 评论
分享
牛客网
牛客企业服务