蚂蚁金服25届转正实习研发笔试题20240601

单选题不记得了,只记得8题24分,下面的题目答案是我自己做的,如果有错误评论或者私信我,我改正,希望能帮助到大家,要面试技巧和面经的也可以私信我。

目录

不定项选择题(12分):

知识点:栈和堆

知识点:完整性?

知识点:网络协议HTTP

知识点:设计模式

算法题(55分):

        签到题1

        算法题2

        算法题3


不定项选择题(12分):

        知识点:栈和堆

        1.假设一个栈,元素的输入序列为b,o,o,k,s。每个元素进栈后可以立即出栈,也可以不出栈,但最多隔三个元素就必须出战,那么可能的出栈序列有哪些情况?
                A b.o,o,k,s
                B b,o, k,o.s
                C b,o,o,s,k
                D b.o.s,o,k

栈的特点是后进先出(LIFO),即最后放入的元素最先被取出。所以单选D,s出栈说明栈内原先是sko,s所以出栈只能是bosko不可能是bosok。(大厂笔试我每次都能遇见这种题),单选题还问了最大堆和最小堆的排序问题,每次笔试都有,大家重点看看

        知识点:完整性?

        2.关于关系的完整性,以下哪些描述是正确的?

                A实体完整性用于确保主键的唯一性

                B参照完整性用于确保外键的有效性

                C用户完整性用于确保用户的权限合法

                D数据完整性用于确保数据的一致性

        答案选ABD我选了C,漂亮,根本没见过的题型不知道在考啥都。

        知识点:网络协议HTTP

        3.以下哪些是HTTP控制缓存的响应头()

                A ETag

                B Last-Modified

                C Cache-Control

                D Expires

        A.ETag - 这个响应头不是直接用于控制缓存的,而是用来标识资源的特定版本。ETag(Entity Tag)通常与Last-Modified头一起使用,用于在HTTP缓存中实现缓存验证。

        B. Last-Modified - 这个响应头用于指示资源的最后修改时间。它通常与ETag一起使用,用于在HTTP缓存中实现缓存验证。

        C. Cache-Control - 这个响应头是用于控制响应缓存的最重要的头之一。它提供了多种指令,如max-age、no-cache、no-store等,用于告诉浏览器如何缓存响应。

        D. Expires - 这个响应头用于提供一个日期/时间,告诉浏览器在这个时间点之前可以直接从缓存中读取数据,而不需要再次请求服务器。

        因此,正确的选项是 C 和 D。ETag 和 Last-Modified 通常用于缓存验证,而不是直接控制缓存行为。

        我单选了C.这种协议也经常问,比如说传输层协议有哪些,多选题

        知识点:设计模式

        4.下面选项中的设计模式,不属于创建型模式的是()
                A.观察者模式
                B.原型模式
                C.桥接模式
                D.工厂方法模式

        高频考点!!!设计模式!!!,我也每次都遇见。

        答案AC,大家牢记下面的设计模式属于哪一类,以及什么时候用这个模式。我依稀记得单选题就问了一道业务场景题,问用户可以选择微信、支付宝、银行卡不同的支付方式,用什么设计模式?

        我选了策略模式

                思维导图是大佬整理的,右下角有水印可见

算法题(55分):

        一共有三道题

        签到题1

        小红定义一个数组的权值为:正数的元素数量减去负数的元素数量。例如,[1,2,-3,-4,5]的权值是1,[-2,-5]的权值是-2.
        现在小红拿到了一个数组,她准备选择恰好k个元素进行取反(同一个元素最多只能取反一次),之后使得数组的权值尽可能大。你能帮帮她吗?

输入描述


第一行输入两个正整数n,k,代表小红拿到的数组和选择的元素数量。
第二行输入n个整数ai,用空格隔开。代表小红拿到的数组。
1 ≤k≤n≤ 10^5
-10^9 ≤ ai ≤ 10^9

输出描述


一个整数,代表操作后数组权值的最大值。

示例1

输入示例:

5 3
3 2 -1 5 -2

输出示例:

3

签到题还是蛮简单的,我的思路如下:

这题分两种情况

        1.k<负数的数量,那么就是反转全部负数,记录正数的数量+2*k-负数的数量

        2.k>负数的数量,那么就是反转完负数,然后反转0,最后反转正数

特别注意:0不是正数也不是负数,所以说我们要记录原先数组的正数数量,负数数量,和0的数量

最后签到题也是全部通过测试案例了。

        算法题2

        小红要识别*号组成的图像是L还是T,图像由二维数组组成,L和T会旋转,请你帮他判断

        第一行输入n,k表示二维数组行列

        后面是n行k列的二位数组  

输入案例:
4 4
..*.
..*.
..*.
***.

输出案例
L

      我的思路:

我把输入转换成01矩阵,.是0,*是1。然后以第一个*号出现的位置为起点,转换成走迷宫问题,如果有分岔路就是T,如果没有分岔路就是L。

第一个*号就是右上角的第一个,然后进行深度优先(广度优先也一样的)遍历,看上下左右四个方位有没有能走的点(记得加上边界条件判断,不然数组越界)。

第一个点有两种情况:

        1.如果第一个点的右边和下边都是1,那么就是L。(可以画图理解一下,不可能是T)

        2.如果只有一边能走,就开始遍历,每走一步都判断一下其他方位有没有可达的点。

                如果可达点位是3那么就返回T,否则当没有可达的点时停止循环,返回L。

然后我只通过了10%的 测试样例,哭了。大佬们看看思路哪里有问题。(我感觉这题我随机random返回T和L,多提交几次正确率都比我自己写的高)        /(ㄒoㄒ)/~~

        算法题3

我都没写到,就到时间自动交卷了,第二题搞半天还是10%

小红拿到了一个数组,数组的元素的绝对值不超过1,她想取一个非空子序列(在原数组中可以不连续),并计算该子序列的乘积。小红想知道,子序列乘积为 -1、0、1 的方案数分别有多少种?输入描述 第一行输入一个正整数n,代表数组的大小。第二行输入n个整数a[n];,代表数组的元素, 1≤n≤ 10^5 -1<ai <1输出描述 三个整数,分别代表子序列乘积为负数、0、正数的方案数。由于答案可能过大,请对10^9+7取模。

        我的思路:很明显动态规划的题目(也是必考)

        我们创建动态规划的状态转移方程,在当前子序列的情况下,增加一个新的元素有三种可能,-1,0,1,那么对应的三个子序列方案数也要变化。

我们可以定义三个变量来分别存储乘积为 -1、0、1 的子序列方案数:

  • neg 表示乘积为 -1 的子序列方案数。
  • zero 表示乘积为 0 的子序列方案数。
  • pos 表示乘积为 1 的子序列方案数。

接下来,我们逐步遍历数组,根据当前元素的值更新这三个变量。

  1. 如果当前元素是 -1,那么:

    • neg 增加 pos + zero(因为乘以 -1 后,1 变 -1,0 保持 0)。
    • pos 增加 zero(因为乘以 -1 后,0 变 1)。
  2. 如果当前元素是 0,那么:

    • zero 重置为 pos + neg + zero(因为任何数乘以 0 都是 0)。
  3. 如果当前元素是 1,那么:

    • pos 增加 pos + zero(因为乘以 1 后,保持不变)。

        状态转移方程: 对于每个元素 a[i]i 从 1 到 n),我们有:

  1. 如果 a[i] == -1

    • neg[i] = (neg[i-1] + zero[i-1] + pos[i-1]) % MOD
    • zero[i] = (pos[i-1] + neg[i-1]) % MOD
    • pos[i] = (pos[i-1] + zero[i-1]) % MOD
  2. 如果 a[i] == 0

    • neg[i] = 0
    • zero[i] = (neg[i-1] + zero[i-1] + pos[i-1]) % MOD
    • pos[i] = zero[i-1]
  3. 如果 a[i] == 1

    • neg[i] = neg[i-1]
    • zero[i] = zero[i-1]
    • pos[i] = (pos[i-1] + zero[i-1]) % MOD

        别认真看了,我要是会,第二题早写出来了/(ㄒoㄒ)/~~

大家加油吧,希望有一天能在大厂遇见各位

http://t.csdnimg.cn/gQS5vicon-default.png?t=N7T8http://t.csdnimg.cn/gQS5v这也是大厂的笔试题,感兴趣的可以做做看

下面还有面试的小技巧,我面试5家拿了四家offer,这些技巧很关键,我八股都没怎么背,只背了很小一部分

http://t.csdnimg.cn/Dnb5qicon-default.png?t=N7T8http://t.csdnimg.cn/Dnb5q

要大厂java面试宝典的也可以私信我,发"大厂java面试宝典"

  • 36
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值