面试提前批

面试总结

爱奇艺笔试 —— 2021/8/1 下午三点

基础题

  • Redis除了做缓存之外,Redis也经常⽤来做分布式锁,甚⾄是消息队列

记录:基础不好


虾皮笔试 2021/8/2 19:00-21:00

算法题

第一道
给一个数组,找到最小下标,使得该下标左边数的和等于右边数的和(不包括下标),题目保证有答案
很简单,暴力过

第二道
数的划分
将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。
求整数n分为k份,共有多少种不同的分法。
输入两个整数n,k(6<n<=200,2<=k<=6)。
输出一个整数,即有几种不同的分法。
给一个数n,分成k份,且不重复,有多少结果,比如7,3
结果是4

public int divide(int n, int k ){
    int dp[][] = new int[200][7];
    dp[0][0] = 1;
    for(i=1;i<=n;i++){
      for(j=1;j<=k;j++){
        if(i>=j){    //划分的分数要小于等于该数本身
        dp[i][j] = dp[i-j][j] + dp[i-1][j-1];
        }
    }
  }
  return dp[n][k];
}

第三道
给一个合法的xml语句,和一个路径,找到xml语句中对应路径的属性,如果没有返回空。比如shopee,如果路径people.name,结果shopee,如果路径是 people.age,结果是""

    public  String getXMLValue(String inxml,String path){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < inxml.length(); i++) {
            char c = inxml.charAt(i);
            if(c!='/')
                sb.append(c);
        }
        inxml = sb.toString();
        String[] words = path.split("\\.");
        boolean flag = false;
        for (int i = 0; i < words.length; i++) {
            words[i] = "<" + words[i] +">";
            int len = words[i].length();
            if(inxml.startsWith(words[i])&&inxml.endsWith(words[i]))
                inxml = inxml.substring(len,inxml.length()-len);
            else{
                flag = true;
                break;
            }
        }
        if(flag)
            return "";
        for (int i = 0; i < inxml.length(); i++) {
            char c = inxml.charAt(i);
            if(c=='<'||c=='>')
                return "";
        }
        return inxml;
            
    }

字节面试 ————>2021/8/4 15:00

很差劲,各方面都差劲

先问项目

  • 介绍项目
  • GateWay网关的作用

依据简历问

  • RPC调用
  • TCP与UDP的异同点,TCP如何让保证可靠连接,
  • Redis缓存穿透与缓存雪崩,异同;解决方式;集群解决缓存雪崩(K乐???)
  • 数据库:mysql在数据量大的情况下分页起点越大查询速度越慢
    https://www.cnblogs.com/llzhang123/p/9239682.html

代码

  • 手写设计模式(单例)
  • 无重复字符的最长子串

SHEIN


奇安信

笔试阶段 8/7 下午4:37

选择

  • 关于RPC模式
    • 一对多?异步?同步
  • 类.静态变量
  • Linux进程调度
  • Linux进程中 top命令
  • 关于DHCP协议
  • innoDBy引擎的特点
  • 关于ARP表
  • HTTP协议字段
  • fork可能的返回值
  • vfork说法
  • Linux grep参数
  • epoll\poll\select\socket\

编程

描述:给定一个数组height[],无重复值
数组中“依次”向后选出三个数,使得角标 0>=i>j>k>len ,且height[i] > height[j] > height[k],或者height[i] < height[j] < height[k]
输出能组成这样 三数 对的个数

岛屿问题(尽可能拿到最大资源且不能回头)
https://leetcode-cn.com/problems/max-area-of-island/

package szy.qiyue;

/**
 * @author BigMonster
 * @create 2021-08-07 15:47
 */
public class Solution1 {
    public static void main(String[] args) {
        Solution1 solution1 = new Solution1();
        int [][]arr = {{1,0,7},{2,0,6},{3,4,5},{0,3,0},{9,0,20}};
        int maximumResource = solution1.getMaximumResource(arr);
        System.out.println(maximumResource);
    }

    public int getMaximumResource (int[][] grid) {
        // write code here
        int max = 0;
        for(int i = 0; i<grid.length; i++){
            for(int j = 0; j<grid[i].length; j++){
                max = Math.max(max, dfs(i, j, grid));
            }
        }
        return max;
    }
        private int dfs(int i, int j, int[][] grid){
            if(i<0 || j<0 || i>=grid.length || j>=grid[i].length || grid[i][j] == 0){
                return 0;
            }

            int temp = grid[i][j];
            int count = grid[i][j];
            grid[i][j] = 0;

            int count_temp1 = Math.max(dfs(i-1, j, grid), dfs(i+1, j, grid));
            int count_temp2 = Math.max(dfs(i, j-1, grid), dfs(i, j+1, grid)) ;
            grid[i][j] = temp;

            count += Math.max(count_temp1, count_temp2);

//            count += dfs(i-1, j, grid);
//            count += dfs(i+1, j, grid);
//            count += dfs(i, j-1, grid);
//            count += dfs(i, j+1, grid);
            return count;
        }


}

贝壳提前批笔试 8/13 晚

第一题

来回撒药

import java.util.*;


public class Solution {
    public static void main(String[] args) {
        long[] res = new Solution().FarmerNN(2, 5);
        System.out.println(Arrays.toString(res));
    }
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @param m long长整型
     * @return long长整型一维数组
     */

    public long[] FarmerNN (int n, long m) {
        // write code here
        long[] ret = new long[n];
        long base = m / (n - 1);
        long yu = m % (n - 1);

        ret[n-1] = base >> 1;
        ret[0] = (base >> 1) + (base & 1);
        Arrays.fill(ret, 1, n -1, base);
        
//        int cur = 0, step = 1;
//        if ((base & 1) == 1) {
//            cur= n - 1;
//            step = -1;
//        }
//        long left = m % (n - 1);
//        while(left-- > 0) {
//            ret[cur]++;
//            cur += step;
//        }
        if((base & 1) != 1){    //偶数
            for(int i = 0; i<yu; i++){
                ret[i] += 1;
            }
        }else{
            for(int i = n-1; i>n-yu-1; i--){
                ret[i] += 1;
            }
        }

        return ret;
    }
}

第二题

删除字符串s中ASCII码前k小的字符

public String NS_String (String s, int k) {
        // write code here
        StringBuilder temp_s = new StringBuilder(s);

        int arr [] = new int[123];
        for(char t : s.toCharArray()){
            arr[(int) t] += 1;
        }
        int begin_j = 0;
        for(int i = 0; i<k; i++){
            for(int j = begin_j ; j<123; ){
                if(arr[begin_j] != 0){
                    for(int l = 0; l<temp_s.length(); l++){
                        if((int) temp_s.charAt(l) == begin_j){
                            temp_s.deleteCharAt(l);
                            l--;
                        }
                    }
                    arr[begin_j] = 0;
                    begin_j++;
                    break;
                }begin_j++;
            }
        }
        s = temp_s.toString();
        return s;
    }

笔试:(2021/9/5)

贝壳:9/3

CodeForces 1374A 棍子拼接
https://www.liangzl.com/get-article-detail-193489.html

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int []arr =new int[n];
        for(int i = 0; i<n; i++){
            arr[i] = sc.nextInt();
            System.out.println(Mu_bang(arr[i]));
        }
    }

    public static int Mu_bang(int n) {
        return (n-1)/2 +1;
    }
}

CodeForces 1374C(括号序列匹配问题)
https://blog.csdn.net/qq_51271013/article/details/116708547?utm_source=app&app_version=4.5.3

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int []arr =new int[n];
        for(int i = 0; i<n; i++){
            arr[i] = sc.nextInt();
            String s = sc.next();
            System.out.println(SHU_ji(s));
        }
    }

    public static int SHU_ji(String s){
        char[] chars = s.toCharArray();
        int count_1 = 0;
        int res = 0;
        for (int i = 0; i < chars.length; i++) {
            if(chars[i] == '('){
                count_1++;
            }else if(chars[i] == ')'){
                if(count_1 > 0){
                    count_1--;
                }else{
                    res++;
                }
            }
        }
        return res;
    }
}

计网知识点

怎么判断循环队列上是否为空,或者已经满了
HTTP头域字段详解

  • 每个头域由一个域名、冒号、和域值三部份组成
    Peterson算法
  • Peterson算法是一个实现互斥锁的并发程序设计算法,可以控制两个线程访问一个共享的单用户资源而不发生访问冲突。
    哈夫曼树的权值
    try catch finally使用
  • 例如:一个try必须跟着一个catch? 或者 一个try必须跟着多个catch?
    关于Having子句的叙述:
    求循环队列的元素个数,已知front和rear,还有容量数,求队列中的循环元素个数
    IO 转换流 字节转字符流
    https://www.cnblogs.com/ixenos/p/5776952.html
    同一进程下的线程有哪些资源是可以共享的

    https://blog.csdn.net/u010913001/article/details/70240770?utm_source=app&app_version=4.5.3
    a=1,b=2,c=3,d=4,a<b?a:c<d?c:d
    设输入序列为123...n,经过栈的作用,可以得到几种不同的序列?
    假设网络带宽是128MB/s,网络单向延时为100ms, 1000个客户端(单线程)同时向服务器传输64KB大小的文件,每个请求大小为64KB,服务器磁盘并发写入速度30MB/s,在传输过程中,服务器吞吐量为 ? MB/S ,单个请求响应时间为 ? ms
    缓存系统采用Lru淘汰算法,假定缓存容量为4
    https://blog.csdn.net/u013215018/article/details/59572436?utm_source=app&app_version=4.5.3
    在一个请求页式存储管理系统中,进程P共有5页,访问串为:3,2,1,0,3,2,4,3,2,1,0,4时,试采用FIFO置换算法和LRU置换算法,计算当分配给该进程的页面数分别为3和4时,访问过程中发生的缺页次数和缺页率,比较所得的结果并解释原因。
    https://m.nowcoder.com/questionTerminal?uuid=0a0e709f1c7343799c0194a1996ae202&ivk_sa=1024320u
    https://tiku.baidu.com/web/view/0692d2a3b1717fd5360cba1aa8114431b90d8e3e
    在一个请求系统中,分别采用 FIFO、LRU和 OPT页面置换算法时,假如一个作业的页面走向为 4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别为 3、4时
    https://blog.csdn.net/gl620321/article/details/106144576/
    无向图G=(V,E),其中V={a,b,c,d,e,f} E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是( )
    将关键字1,2,3,4,5,6,7依次插入到初始为空的平衡二叉树T中,则T中平衡因子为0的分支结点的个数是?
    有一组数据[111,99,55,88,77,1,9]采用堆排序对其进行原地排序,求最后55的数组下标变了几次?
    主机甲与主机乙之间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300B和500B的有效载荷,第一个段的序列号为200,主机乙正确接收到这两个数据段后,发送给主机甲的确认序列号是

9/8

posted @ 2021-08-02 21:57  BigMonster85  阅读(101)  评论(0)    收藏  举报