面试提前批
面试总结
爱奇艺笔试 —— 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语句中对应路径的属性,如果没有返回空。比如,如果路径people.name,结果shopee,如果路径是 people.age,结果是"" shopee
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,主机乙正确接收到这两个数据段后,发送给主机甲的确认序列号是



浙公网安备 33010602011771号