shopee秋招提前批BE笔试【2022】——牛客

shopee秋招提前批BE笔试【2022】——牛客

一、选择题

1.若客户端首先向服务器发送FIN段请求断开TCP连接,则当客户端收到的服务器发送的FIN段并向服务器发送ACK段后,TCP状态转换为( )。

TIME_WAIT

2.Unix一共有五种I/O模型,分别是阻塞式I/O、非阻塞式I/O、I/O复用、信号驱动式I/O、异步 I/O,以下关于这些I/O模型说法错误的是

I/O复用不会阻塞用户进程

3.下列函数的时间复杂度是

int test(int n) {

int i = 0, sum = 0;

while(sum < n)

sum += ++i;

return i;

}

O(n^0.5)

i*(i+1)/2=n,一共操作了i+1次

4.关于Java JMM之Happens-Before,描述错误的是?

Happens-Before规则
Happens-Before的八个规则(摘自《深入理解Java虚拟机》12.3.6章节):
​
程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作;
管程锁定规则:一个unLock操作先行发生于后面对同一个锁的lock操作;(此处后面指时间的先后)
volatile变量规则:对一个变量的写操作先行发生于后面对这个变量的读操作;(此处后面指时间的先后)
线程启动规则:Thread对象的start()方法先行发生于此线程的每个一个动作;
线程终结规则:线程中所有的操作都先行发生于线程的终止检测,我们可以通过Thread.join()方法结束、Thread.isAlive()的返回值手段检测到线程已经终止执行;
线程中断规则:对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生;
对象终结规则:一个对象的初始化完成先行发生于他的finalize()方法的开始;
传递性:如果操作A先行发生于操作B,而操作B又先行发生于操作C,则可以得出操作A先行发生于操作C;

5.关于0/1背包问题,以下描述正确的是

对于同一背包与相同的物品,背包问题取得的总价值一定大于等于做0/1背包问题

其他背包问题(如完全背包,物品无限),一定大于0 / 1背包的结果

6.有一对夫妇,先后生了两个孩子,其中一个孩子是女孩,问另一个孩子是男孩的概率是

2/3

7.下面有关sql绑定变量的描述,说法错误的是?

使用绑定变量,查询优化器会预估的比字面变量更加真实

绑定变量被使用时,查询优化器会忽略其具体值,因此其预估的准确性远不如使用字面量值真实

8.对数组[45, 31, 47, 50, 90, 78, 34]构建一个大顶堆, 则结果是:

[90, 78, 47, 50, 31, 45, 34]

9.以下关于进程通信方式描述错误的是:

消息队列,是一个在系统内存中用来保存消息的队列

消息队列 是一种先进先出的 队列 型数据结构,实际上是系统内核中的一个内部链表。

10.如果x=2,以下表达式中,值不为6的是()

2*x,x+=2

A选项的2*x并没有变量来接收这个表达式的值,因此x还是等于2,x+=2后x为4

11.以下替换算法中,属于堆栈型替换算法的是

近期最少使用算法
近期最久未用过算法
优化替换算法

堆栈型算法就是,如果有两台一样环境,调用页面内存次序一样的电脑,其中一台A的内存页面数为m, 另一台B的内存页面数为n,且m<n,总是能同一时刻保证A里有的页面B里也有。

LFU和LRU能满足,因为最经常使用和最多使用的m个页面也被包含在同样的n个页面里。OPT类似。

12.下列属于防火墙技术的是

应用级网关
代理防火墙
数据包过滤

IPsec(Internet Protocol Security)是为IP网络提供安全性的协议和服务的集合,是***的一种常用技术,目的是保证信息传输的安全性。

IPsec为通信双方建立一条安全的隧道,在其中进行加密传输。

而防火墙技术是在网络边界保证安全性,IPsec保证传输过程的安全性,所以IPsec不是一种防火墙技术。

而其他三种是应用在网络边界的,过滤有害的数据。

13.

int x =5;

const int * const p = &x;

const int &q=x;

int const *next=&x;

const int *j=&x;

以下哪行代码存在问题

q++;
(*j)++;
*p =1;

14.下列哪些方案可实现幂等

数据库唯一主键
数据库乐观锁
Token令牌
下游传递唯一序列号

幂等的意思是相同的请求参数有相同的响应

15.对于文件的写入描述正确的有?

文件的写入分为直接I/O和带缓存的I/O
直接I/O会跑过缓存层,直接到设备驱动层
缓存I/O会将内容拷贝到内核态的页中,形成脏页
如果脏页太多,就需要回写磁盘

二、编程题

import java.util.*;
public class Solution {
    public int[] GetEndPoint (String s) {
        s = s.toUpperCase();
        int[] res = new int[]{0, 0};
        int num = 0;
        for(int i = 0; i < s.length(); i++){
            //if(Character.isDigit(s.charAt(i))){
            if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){
                num = num * 10 + s.charAt(i) - '0';
            }else{
                if(num == 0) num = 1;
                if(s.charAt(i)== 'W') res[1] += num;//上
                else if(s.charAt(i)== 'S') res[1] -= num;//下
                else if(s.charAt(i) == 'A') res[0] -= num;//左
                else res[0] += num;//右
                num = 0;
            }
        }
        return res;
    }
}
import java.util.*;
public class Solution {
    public String compressString (String s) {
        if(s.length() == 0) return "";
        char[] c = s.toCharArray();
        StringBuilder res = new StringBuilder();
        int count = 1;
        for(int i = 0; i < c.length-1; i++){
            if(c[i] == c[i+1]){
                count++;
            }else{
                res.append(c[i]);
                if(count > 1) res.append(count);
                count = 1;
            }
        }
        // 判断最后的字符
        res.append(c[c.length-1]);
        if(count > 1) res.append(count);
        return res.toString();
    }
}
import java.util.*;
public class Solution {
    public int petalsBreak (int[] nums) {
        int res=0;
        for(int i=0;i<nums.length;i++){
            res+=nums[i]/2+nums[i]%2;
        }
        return res;
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值