当前位置: 首页 > news >正文

阿里巴巴2017实习生笔试题(二)

阿里巴巴2017实习生笔试题(二) 2024/12/25

1.下面哪一个不是动态链接库的优点?  B

A.共享

B.装载速度快

C.开发模式好

D.减少页面交换

解析

1 静态链接库的优点 

 (1) 代码装载速度快,执行速度略比动态链接库快; 

 (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 

2 动态链接库的优点 

 (1) 更加节省内存并减少页面交换

 (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;

 (3) 不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;

 (4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。

3 不足之处

 (1) 使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;

 (2) 使用动态链接库的应用程序不是自完备的,它依赖的DLL模块也要存在,如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。

2.n个数值选出最大m个数(3<m<n)的最小算法复杂度是O(n)

解析

使用快速选择(Quickselect)算法,可以找到第m大的元素,平均复杂度为O(n),最坏情况下为O(n^2)。一旦找到第m大的元素,我们可以通过一次遍历将前m个元素选出。这种方法的复杂度为O(n)。

使用快速排序来寻找第m大的元素可以通过一种变体的算法,通常称为快速选择或。这个算法的基本思想如下:

  1. 分区(Partition):选择一个枢轴(pivot),将数组分成两部分,左边部分的元素都小于等于枢轴,右边部分的元素都大于枢轴。

  2. 递归选择

    • 如果枢轴的索引正好是我们想要的m(或n-m+1,如果我们要找第m小的元素),我们就找到了目标元素。
    • 如果枢轴的索引大于m(或n-m+1),则在枢轴左边的子数组中继续寻找。
    • 如果枢轴的索引小于m(或n-m+1),则在枢轴右边的子数组中继续寻找。

下面是使用Python实现这个算法的伪代码

import randomdef quickselect(arr, m):if len(arr) == 1:return arr[0]# 选择一个随机的枢轴pivot = random.choice(arr)# 分区left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]# 选择下一个递归的子数组if m <= len(right):return quickselect(right, m)elif m > len(arr) - len(left):return quickselect(left, m - (len(arr) - len(left)))else:return pivot# 示例:从数组中找出第5大的元素(即第(n-5)小的元素)
arr = [3, 2, 1, 5, 6, 4]
m = 5
print(f"第 {m} 大的元素是: {quickselect(arr, m)}")

3.由权值分别为1、12、13、4、8的叶子节点生成一颗哈夫曼树,它的带权路径长度为(81)

4.阿里巴巴国际站的股票代码是1688,这个数字具有这样的特性,首先是个首位为1的4位数,其次恰巧有且仅有1个数字出现了两次。类似的数字还有:1861,1668等。这样的数字一共有(432)个。

解析

(1)若这个四位数的重复数字为1,那么首先从三个空位中选出一个给1,第二步从剩下9个可选数字中选出2个有序的排列到剩下的两个空位中去,那么有C(1,3)*A(2,9)=3*(9!/(9-2)!)=3*9*8=216种可能;

(2)若这个四位数的重复数字不为1,那么首先从9个可选数字中选出一个作为重复数字(C(1,9)),并放到三个空位中的两个(这两个数字相同,故只涉及组合)(C(2, 3)),然后从剩下8个数字中选出一个(它的位置在重复数字确定后就自然固定了,不可选)即可,故有C(1,9)*C(2, 3)*C(1, 8)=216种可能。

总共:216+216=432

5.工程师M发明了一种游戏:M将一个小球随机放入完全相同的三个盒子中的某一个,玩家选中装有球的盒子即获胜;开始时M会让玩家选择一个盒子(选择任何一个获胜概率均为1/3);玩家做出选择后,M会打开没有被选择的两个盒子中的一个空盒,此时M会询问玩家是否更改选择(可以坚持第一次选择,也可以选择另一个没有打开的盒子),下列叙述正确的是(选择另一个没有被打开的盒子获胜概率更高)。

解析

三门问题-蒙特卡洛问题

情况一:我选中了有球的盒子,我更换的话将失败,不更换的话将成功。

情况二:我选中了没球的盒子,我更换的话将成功,不更换的话将失败。

情况三:我选中了没球的盒子,我更换的话将成功,不更换的话将失败。

综上,我们发现更换了成功的概率是2/3;二不更换成功的概率是1/3。

6.以下哪种方式,在读取磁盘上多个顺序数据块时的效率最高?C

A.中断控制方式

B.DMA方式

C.通道方式

D.程序直接访问方式

E.循环检查I/O方式

F.以上访问方式都一样

解析

(1)程序直接访问方式跟循环检查I/O方式,应该是一个意思吧,是最古老的方式。CPU和IO串行,每读一个字节(或字),CPU都需要不断检测状态寄存器的busy标志,当busy=1时,表示IO还没完成;当busy=0时,表示IO完成。此时读取一个字的过程才结束,接着读取下一个字。

(2)中断控制方式:循环检测先进些,IO设备和CPU可以并行工作,只有在开始IO和结束IO时,才需要CPU。但每次只能读取一个字。

(3)DMA方式:Direct Memory Access,直接存储器访问,比中断先进的地方是每次可以读取一个块,而不是一个字。

(4)通道方式:比DMA先进的地方是,每次可以处理多个块,而不只是一个块。

7.下列不是进程间的通信方式的是(B)

A.管道

B.回调

C.共享内存

D.消息队列

E.socket

F.信号量

解析

管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。 

共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

8.已知IBM的PowerPC是big-endian字节序列而Intel的X86是little-endian字节序,如果在地址啊存储的整形值时0x04030201,那么地址为a+3的字节内存储的值在PowerPC和Intel X86结构下的值分别是? 1 4

9.在TCP/IP建立连接过程中,客户端或服务器的状态转移说法错误的是(D)

A.经历SYN_RECV状态

B.经历SYN_SEND状态

C.经历ESTABLISHED状态

D.经历TIME_WAIT状态

10.已知一棵二叉树的先序和中序遍历序列如下:先序:A、B、C、D、E、F、G、H、I,J中序:C、B、A、E、F、D、I、H、J、G其后序遍历序列为:C、B、F、E、I、J、H、G、D、A

11.设有四个元素A、B、C、D顺序进栈,在进栈过程中可以出栈,出栈次序错误的排列是DCAB

12.问题描述:

1

2

3

4

5

6

7

8

9

10

11

12

13

#pragma pack(2)

class BU

{

    int number;

    union UBffer

    {

        char buffer[13];

        int number;

    }ubuf;

    void foo(){}

    typedef char*(*f)(void*);

    enum{hdd,ssd,blueray}disk;

}bu;

sizeof(bu)的值是(22)

解析

#pragma pack(2)表示对齐设定为2字节

 union的大小取决于它所有的成员中,占用空间最大的一个成员的大小,并且需要内存对齐,这里因为#pragma pack(2),所以union的大小为14,如果不写#pragma pack(2),那么union大小为16【因为与sizeof(int)=4对齐】     void foo(){} //0     typedef char*(*f)(void*); //0     enum{hdd,ssd,blueray}disk; // 4 }bu;

因此sizeof(union) = 4+14 +0 +0 +4 = 22

13.同一个进程中的线程不共享的部分是(F)

A.信号

B.堆

C.文件描述符

D.进程组id

E.代码段

F.栈空间

14.下面关于虚拟局域网VLAN的叙述错误的是(D)

A.VLAN是由局域网网段构成的与物理位置无关的逻辑组

B.利用以太网交换机可以很方便地实现VLAN

C.每一个VLAN的工作站可处在不同的局域网中

D.不同VLAN内的用户可以相互之间直接通信

E.VLAN可以强化网络安全和网络管理

F.VLAN能灵活控制广播活动

解析

VLAN的主要目的之一就是隔离网络流量,不同VLAN之间的通信需要通过路由器或者配置了VLAN间路由功能的设备(如三层交换机)来实现。直接通信是不可能的,除非这些设备配置了相应的路由策略或使用了如VTP(VLAN Trunking Protocol)这样的协议来管理VLAN间的通信。

15.刚毕业的小王上班有两路公交车都可以从家到公司。如果只等A车,平均需要5分钟才等到;如果只等B车,平均需要7分钟才能等到。假定两辆车运行时间独立,那么小王平均需要等多长时间才能等到A车或B车? 2分55秒

解析

16.一个黑色袋子中装有5个红球,5个蓝球,5个黄球,从中抽取三次,每次抽一个球,取完不放回,则每种颜色球各得一个的概率是(25/91)

17.以下程序的输出结果是(24)

1

2

3

4

5

6

#include <stdio.h>

int main() {

    int* pint = 0;

    pint += 6;

    printf("%d\n", pint);

}

解析

第一句的意思是将pint指针指向0地址处,由于指针类型是int,每次加1相当于移动四个字节,(在int为四个字节的机器上)

18.某种5号(AA)充电电池在充满电之后的电量是900毫安时和1100毫安时的可能性各为1/2。如果将将电池串联使用,常常会因为其中一部分电池先放电完毕,而且其它电池还有100毫安时以上的电量时,引起先放完电的电池损坏。那么以下说法正确的是:C

A.如果两节这样的电池串联使用,那么必然有1节电池会损坏。

B.如果有许多节这样的电池串联使用,则至少会有1节电池会损坏。

C.如果放电电量控制在900毫安时以内,则不会有电池损坏

D.当有2n节电池串联使用时,至多会有n节电池会损坏

E.当串联的电池个数是奇数时,不会有电池损坏。

F.电量少的电池一定会损坏。

19.下面哪种协议在数据链路层?F

A.ARP

B.ICMP

C.FTP

D.UDP

E.HTTP

F.VPN

解析
ICMP、ARP是网络层,UDP是传输层,FTP和HTTP是应用层

20.一组记录排序码为(5 11 7 2 3 17),则利用堆排序方法建立的初始堆为(17 11 7 2 3 5)

21.甲乙丙三人是阿里巴巴开发人员,ABC三人是阿里巴巴测试人员,每个开发都有对应的测试人员。主管介绍说:“A对应的开发是乙的好友,并在三个开发中最年轻;丙的年龄比C对应的开发大。”则开发和测试的对应关系为(甲-A,乙-C,丙-B)。

22.某机器人可以说真话或者假话。某程序设定其周末(周六周日)说真话,周四说谎话,其他日期随机。某测试打算验证该功能。他连续七天,每天问机器人“你在哪里出生的?”,在前六天得到了这样的答案:阿里,淘宝,阿里,淘宝,天猫,淘宝。那么第七天,机器人的回答应该是(阿里)

相关文章:

阿里巴巴2017实习生笔试题(二)

阿里巴巴2017实习生笔试题&#xff08;二&#xff09; 2024/12/25 1.下面哪一个不是动态链接库的优点&#xff1f; B A.共享 B.装载速度快 C.开发模式好 D.减少页面交换 解析 1 静态链接库的优点 (1) 代码装载速度快&#xff0c;执行速度略比动态链接库快&#xff1b;…...

Docker安装与使用

文章目录 0.关键词1.安装docker2.镜像和容器3.Docker基础1.常见命令2.数据卷&#xff08;volume&#xff09;要解决的问题&#xff1a;什么是数据卷&#xff1a;解决的办法&#xff1a; 3.数据卷的使用基本命令挂载数据卷&#xff08;nginx&#xff09;基于本地目录数据挂载&am…...

通过nginx设置一个图片服务器,并使用 Nginx 作为反向代理

通过nginx设置一个图片服务器&#xff0c;并使用 Nginx 作为反向代理 安装nginx 首先需要去官网下载一个nginx&#xff0c;我这里下载了最新的稳定版本&#xff1a;nginx-1.26.2&#xff0c;下载下来是一个压缩包&#xff0c;解压之后就可以直接用了。 修改nginx的配置文件 …...

MacOS M3源代码编译Qt6.8.1

编译时间过长&#xff0c;如果不想自己编译&#xff0c;可以通过如果网盘进行下载&#xff1a; 链接: https://pan.baidu.com/s/17lvF5jQ-vR6vE-KEchzrVA?pwdts26 提取码: ts26 在macOS上编译Qt 6需要一些前置步骤和工具。以下是编译Qt 6的基本步骤&#xff1a; 安装Xcode和…...

【Pytorch实用教程】PyTorch 自带的数据集全面解读

下面这篇博客文章将带你快速了解 PyTorch 自带(或官方维护)的各类常用数据集,并介绍它们的使用方法,包括图像、文本和音频数据集。希望能帮助你在项目中快速上手并提高效率。 一、为什么要使用 PyTorch 自带的数据集? 1. 方便、快捷 官方维护的数据集通常已经帮助我们做好…...

Flask使用的正例和反例

Flask使用的正例和反例 文章目录 Flask使用的正例和反例一 &#xff0c; 使用注册异常二 &#xff0c; 新增数据成功后要返回新增数据的id三&#xff0c; 模型查询语句抽取成函数四&#xff0c; 业务逻辑函数传递的参数不应该用字典类型&#xff0c;要传不同字段的参数&#xf…...

2024年河北省职业院校技能大赛云计算应用赛项赛题第2套(私有云)

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…...

我的软件架构师——Java 职位面试经历。

最近,我参加了一家领先的服务型公司的软件架构师(Java)职位的面试。我在这里分享了一些面试官问我的问题。我只列出了与 Java 相关的问题,因为本文主要关注 Java。面试官问我有关 AWS、Docker、Kubernetes、Kafka、Elastic Search、SQL/NoSQL 和设计模式的问题。 ClassNotF…...

npm error code ETIMEDOUT

参考:https://blog.csdn.net/qq_38572963/article/details/142052986 二、解决办法 1、清空缓存 npm cache clean --force 2、查看当前的npm镜像设置 npm config get registry 3、切换新镜像源 npm config set registry https://registry.npmmirror.com 4、查看新源是否设置成功…...

(11)(3.2) ESC信号问题

文章目录 前言 1 信号电平不足 2 感应噪声 3 ESC过电压尖峰 4 ESC固件错误 前言 本页讨论了 ESC 信号的几个潜在问题&#xff0c;这些问题可能导致不可靠的操作&#xff0c;甚至在起飞时坠毁。这些主要发生在较大的四轮飞机上&#xff0c;这些飞机从动力和自动驾驶仪到 E…...

Postman最新接口自动化持续集成

学习地址&#xff1a;https://www.bilibili.com/video/BV1VDC5Y7EJA?spm_id_from333.788.videopod.episodes&vd_source336a0b0a2ff09832b3a55c3599ffb193&p9 1、旧版&#xff1a;PostmanNewmanAllureJenkins 缺点&#xff1a;需要安装较多软件&#xff0c;脚步需要手…...

windows nacos安装配置

GitHub下载压缩包 解压目录&#xff08;注意不要用中文路径&#xff09; 在mysql先创建数据库nacos&#xff0c;再执行sql脚本 配置数据库 #*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: ### Deprecated conf…...

重温设计模式-外观模式和适配器模式的异同

文章目录 目的不同适配器模式&#xff1a;外观模式&#xff1a; 结构和实现方式不同适配器模式&#xff1a;外观模式&#xff1a; 对客户端的影响不同适配器模式&#xff1a;外观模式&#xff1a; 目的不同 适配器模式&#xff1a; 主要目的是解决两个接口不兼容的问题&#…...

数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误

文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户&#xff08;也可以修改所有者权限&#xff09; 背景 故障报错&#xff1a; nginx报错信息&#xff1a; 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…...

云原生后端开发(一)

云原生后端开发 云原生&#xff08;Cloud-Native&#xff09;是指一种构建和运行应用程序的方式&#xff0c;它充分利用了云计算的特点&#xff0c;比如弹性伸缩、自动化部署、容器化等。在云原生的架构下&#xff0c;后端应用通常具备高度可扩展、可维护、易于自动化管理的特…...

实现用户登录系统的前后端开发

**一、**实验名称 实现用户登录系统的前后端开发。 **二、**参考资料 Web开发技术第一章课件。 **三、**实验目的 1.练习前端基本技术的使用。 2.练习使用Servlet/JSP开发简单后端程序。 3.练习使用Tomcat发布Web应用。 4.练习使用Spring Boot开发简单的后端程序。 **…...

双刃剑下的机遇与风险:交易中的杠杆效应

做外汇交易的人都会不可避免地需要考虑交易的杠杆大小。在这个市场中&#xff0c;杠杆效应作为一种关键的金融工具&#xff0c;不仅为投资者提供了放大收益的机会&#xff0c;同时也带来了更高的风险。今天&#xff0c;EagleTrader想与广大交易员一起深入探讨这个不可或缺的要素…...

伏羲0.13(文生图)

确保伏羲0.12&#xff08;文生图&#xff09;注释和GUI显示均为中文&#xff0c;项目文件夹名称为中文&#xff0c;并提供使用说明。此外&#xff0c;我将完善风格迁移的确定及训练函数和代码。以下是完整的Python文件和相关说明。 项目结构 文本生成多模态项目/ ├── conf…...

深度学习blog-卷积神经网络(CNN)

卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种广泛应用于计算机视觉领域&#xff0c;如图像分类、目标检测和图像分割等任务中的深度学习模型。 1. 结构 卷积神经网络一般由以下几个主要层组成&#xff1a; 输入层&#xff1a;接收…...

深度学习中的残差网络、加权残差连接(WRC)与跨阶段部分连接(CSP)详解

随着深度学习技术的不断发展&#xff0c;神经网络架构变得越来越复杂&#xff0c;而这些复杂网络在训练时常常遇到梯度消失、梯度爆炸以及计算效率低等问题。为了克服这些问题&#xff0c;研究者们提出了多种网络架构&#xff0c;包括 残差网络&#xff08;ResNet&#xff09;、…...

Python爬虫监控程序设计思路

最近因为爬虫程序太多&#xff0c;想要为Python爬虫设计一个监控程序&#xff0c;主要功能包括一下几种&#xff1a; 1、监控爬虫的运行状态&#xff08;是否在运行、运行时间等&#xff09; 2、监控爬虫的性能&#xff08;如请求频率、响应时间、错误率等&#xff09; 3、资…...

使用 C++/OpenCV 制作跳动的爱心动画

使用 C/OpenCV 制作跳动的爱心动画 本文将引导你如何使用 C 和 OpenCV 库创建一个简单但有趣的跳动爱心动画。我们将通过绘制参数方程定义的爱心形状&#xff0c;并利用正弦函数来模拟心跳的缩放效果。 目录 简介先决条件核心概念 参数方程绘制爱心动画循环模拟心跳效果 代码…...

Spring @Value注解的依赖注入实现原理

Spring Value注解的依赖注入实现原理 一&#xff0c;什么是Value注解的依赖注入二&#xff0c;实现原理三&#xff0c;代码实现1. 定义 Value 注解2. 实现 InstantiationAwareBeanPostProcessor3. 实现 AutowiredAnnotationBeanPostProcessor4. 占位符解析逻辑5. 定义 StringVa…...

深入理解 Linux 文件系统与日志文件分析

一、Linux 文件系统概述 1. 文件系统的基本概念 文件系统&#xff08;File System&#xff09;是操作系统用于管理和组织存储设备上数据的机制。它提供了一种结构&#xff0c;使得用户和应用程序能够方便地存储和访问数据。 2. Linux 文件系统结构 Linux 文件系统采用树状目…...

线程相关面试题

提示&#xff1a;线程相关面试题&#xff0c;持续更新中 文章目录 一、Java线程池1、Java线程池有哪些核心参数&#xff0c;分别有什么的作用&#xff1f;2、线程池有哪些拒绝策略&#xff1f;3、说一说线程池的执行流程?4、线程池核心线程数怎么设置呢&#xff1f;4、Java线程…...

2025年微信小程序开发:趋势、最佳实践与AI整合

引言 微信小程序自2017年推出以来&#xff0c;已成为中国互联网生态中不可或缺的一部分。根据最新数据&#xff0c;截至2024年&#xff0c;微信小程序的日活跃用户超过4.5亿&#xff0c;总数超过430万个&#xff0c;95%的中国企业拥有自己的小程序&#xff08;WeChat Mini Pro…...

【深度学习】15. Segment Anything Model (SAM) :基于提示的分割新时代

Segment Anything Model (SAM) &#xff1a;基于提示的分割新时代 基本介绍 The first foundation model for promptable segmentation. Segment Anything Model&#xff08;简称 SAM&#xff09;是 Meta AI 于 2023 年提出的一种通用型图像分割基础模型。与以往分割模型不同&…...

黑马点评完整代码(RabbitMQ优化)+简历编写+面试重点 ⭐

简历上展示黑马点评 完整代码地址 项目描述 黑马点评项目是一个springboot开发的前后端分离项目&#xff0c;使用了redis集群、tomcat集群、MySQL集群提高服务性能。类似于大众点评&#xff0c;实现了短信登录、商户查询缓存、优惠卷秒杀、附近的商户、UV统计、用户签到、好…...

Linux——计算机网络基础

一、网络 1.概念 由若干结点和连接结点的链路组成。结点可以是计算机&#xff0c;交换机&#xff0c;路由器等。 2.互联网 多个网络连接起来就是互联网。 因特网&#xff1a;最大的互联网。 二、IP地址和MAC地址 1.IP地址 &#xff08;1&#xff09;概念 IP地址是给因…...

JavaScript 对象展开语法

文章目录 JavaScript 对象展开语法1、对象展开&#xff08;Spread&#xff09;操作&#xff1a;2、组件注册3、示例应用总结 JavaScript 对象展开语法 示例代码&#xff1a; export default {...student,components: {ConponentA: ConponentA,ConponentB: ConponentB},这段代…...