面试复盘|猿辅导一二三四面!(9.14已oc)

u1s1总体三轮技术面,还是比较难的!

下面看面经吧。

一面 8.13号 50min

1.项目介绍

java基础

1.接口和抽象类

2.重载和重写的区别是什么?

3.java中常见的集合有哪些

4.线程的状态

5.java的运行时区有哪些?

6.虚拟机栈中什么情况会发生oom

7.异常类说一下,erro和exception的区别

手撕代码

1.对链表进行选择排序

2.对数组进行消消乐。


import java.util.Stack;

public class t6 {
    public static void main(String[] args) {
        int []num = new int[]{0,1,2,2,2,1,1,4};
        int n = 3;
        delect(num,n);
    }

    /*
    * 消除数组中的连续相同的n个数 ,并返回消除后的结果
    * 比如: 1 3 3 3 1 2 2  n = 2 返回 1 3 1
    * 另外还有一个就是如果消除后依然满足条件继续消除
    * 比如 1 3 3 3 1 1 2 n = 3 返回2
     * */
    public static void delect(int []nums,int n){
        Stack<int[]> stack = new Stack<>();
        for(int num:nums){
            //如果为空 或者当前元素与栈顶元素不一样 就放入栈中
            if(stack.isEmpty() || num != stack.peek()[0]){
                stack.push(new int[]{num,1});
            }else {
                //说明遇到相等了
                stack.push(new int[]{num,stack.peek()[1]+1});
                if(stack.peek()[1] == n){
                    int T = n;
                    while (T-->0){
                        stack.pop();
                    }
                }
            }
        }
        for (int[] ints : stack) {
            System.out.println(ints[0]);
        }
    }
}


二面 8.20号 50min


1.自我介绍
2.项目介绍
3.你项目里有数据库吧,数据库的三大范式是什么?你项目里有用到这个吗?
4.你对微服务的理解,你项目中用到了几个微服务,为什么这么分呢?
5.你觉得一个微服务项目应该包含哪些东西?
6.springcloud nacos怎么进行服务注册的?


7.手撕两道题
(1)将链表的第m到第n个位置进行反转

import java.util.*;
 
/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */
 
public class Solution {
    /**
     *
     * @param head ListNode类
     * @param m int整型
     * @param n int整型
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {
        // write code here
        ListNode result = new ListNode(0);
        result.next = head;
        ListNode pre = result,cur = head,temp = null;
        for(int i=1;i<m;i++){
            //找到第m个的前一个
            pre = cur;
            cur = cur.next;
        }
        //开始对m-n的进行就地反转
        for(int i=0;i<n-m;i++){
            temp = cur.next;
            cur.next = temp.next;
            temp.next = pre.next;
            pre.next = temp;
        }
        return result.next;
    }
}


(2) 字符串转有效ip地址

import java.util.*;


public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return string字符串ArrayList
     */
    public ArrayList<String> restoreIpAddresses (String s) {
        // write code here
        ArrayList<String> res = new ArrayList<>();
        ArrayList<String> ip = new ArrayList<>();
        dfs(s,res,ip,0);
        return res;
    }
    private void dfs(String s,ArrayList<String> res,ArrayList<String> ip,int start){
        if(ip.size()==4 && start == s.length()){
            //说明找到一个合适解
            res.add(ip.get(0)+'.'+ip.get(1)+'.'+ip.get(2)+'.'+ip.get(3));
            return;
        }
        
        //进行剪枝 判断剩余字符串长度是否大于所缺的个数
        if(s.length()-start>3*(4-ip.size()))
            return;
        //最少是4位 
        if(s.length()-start<(4-ip.size()))
            return;
        int num = 0;
        //每一个位置最多是3位 需要控制好
        for(int i=start;i<start+3&&i<s.length();i++){
            num = num*10+(s.charAt(i)-'0');
            if(num<0 || num>255){
                continue;
            }
            ip.add(s.substring(start,i+1));
            dfs(s,res,ip,i+1);
            ip.remove(ip.size()-1);
            if(num == 0){
               break;
            }
        }
    }
}










三面 8.22号 50min


1.自我介绍


2.项目介绍


3.挨个项目问


4.然后出了两个题

(1)岛屿的最大面积
class Solution {
   // static int res = 0;
    static int [][]dir = new int[][]{{-1,0},{1,0},{0,-1},{0,1}};
    public int maxAreaOfIsland(int[][] grid) {
        int m = grid.length,n = grid[0].length;
       // boolean [][]visit = new boolean[m][n];
        int flag = 0;
        int res = 0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j] == 1){
                    //说明是入口
                    //visit[i][j] = true;
                    // int sum = 0;
                    grid[i][j] = 0;
                    int sum = dfs(grid,i,j);
                    res = Math.max(res,sum);
                }
            }
        }
        return res;
    }

    public static int dfs(int [][]num,int i,int j){
        if(i<0||i>=num.length||j<0||j>=num[0].length ||num[i][j]=='0')
            return 0;
        int sum = 1;
        for(int d=0;d<4;d++){
            int newi = i+dir[d][0];
            int newj = j+dir[d][1];
            if(newi<0 || newi>= num.length || newj<0 || newj>= num[0].length ||  num[newi][newj]==0)
                continue;
            //visit[newi][newj] = true;
            num[newi][newj] = 0;
            sum+=dfs(num,newi,newj);
            //visit[newi][newj] = false;
        }
        return sum;
    }
}

(2)最长有效括号(改编题)


先跟面试官聊的这个题目,这个题目是力扣的改编题,力扣那个都是小括号,这个里面有大括号和中括号。根据当时的思路,有点问题,后面面试官让返回去写第一题了,说第二题他也不知道答案,就是想跟我聊聊,哈哈哈。

hr面 8.22号 20min

1.自我介绍

2.就常规问题,自己对当前教育行业的看法,自己的优缺点之类的。

等了三周,终于意向来了,哈哈哈,不容易,加油!!!
#面试复盘##猿辅导##面经#
全部评论
三面好像是同一个面试官,第二题我也没写出来😅
点赞 回复
分享
发布于 2021-09-14 23:26
现在去教育行业就是******吧,可能7月入职,8月就裁员,我之前拒了作业帮的offer,猿辅导和我约了面试我也直接拒绝了😂
点赞 回复
分享
发布于 2021-10-04 00:24
淘天集团
校招火热招聘中
官网直投

相关推荐

6 12 评论
分享
牛客网
牛客企业服务