阿里巴巴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大的元素可以通过一种变体的算法,通常称为快速选择或。这个算法的基本思想如下:
-
分区(Partition):选择一个枢轴(pivot),将数组分成两部分,左边部分的元素都小于等于枢轴,右边部分的元素都大于枢轴。
-
递归选择:
- 如果枢轴的索引正好是我们想要的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 |
|
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 |
|
解析
第一句的意思是将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实习生笔试题(二) 2024/12/25 1.下面哪一个不是动态链接库的优点? B A.共享 B.装载速度快 C.开发模式好 D.减少页面交换 解析 1 静态链接库的优点 (1) 代码装载速度快,执行速度略比动态链接库快;…...
Docker安装与使用
文章目录 0.关键词1.安装docker2.镜像和容器3.Docker基础1.常见命令2.数据卷(volume)要解决的问题:什么是数据卷:解决的办法: 3.数据卷的使用基本命令挂载数据卷(nginx)基于本地目录数据挂载&am…...
通过nginx设置一个图片服务器,并使用 Nginx 作为反向代理
通过nginx设置一个图片服务器,并使用 Nginx 作为反向代理 安装nginx 首先需要去官网下载一个nginx,我这里下载了最新的稳定版本:nginx-1.26.2,下载下来是一个压缩包,解压之后就可以直接用了。 修改nginx的配置文件 …...
MacOS M3源代码编译Qt6.8.1
编译时间过长,如果不想自己编译,可以通过如果网盘进行下载: 链接: https://pan.baidu.com/s/17lvF5jQ-vR6vE-KEchzrVA?pwdts26 提取码: ts26 在macOS上编译Qt 6需要一些前置步骤和工具。以下是编译Qt 6的基本步骤: 安装Xcode和…...
【Pytorch实用教程】PyTorch 自带的数据集全面解读
下面这篇博客文章将带你快速了解 PyTorch 自带(或官方维护)的各类常用数据集,并介绍它们的使用方法,包括图像、文本和音频数据集。希望能帮助你在项目中快速上手并提高效率。 一、为什么要使用 PyTorch 自带的数据集? 1. 方便、快捷 官方维护的数据集通常已经帮助我们做好…...
Flask使用的正例和反例
Flask使用的正例和反例 文章目录 Flask使用的正例和反例一 , 使用注册异常二 , 新增数据成功后要返回新增数据的id三, 模型查询语句抽取成函数四, 业务逻辑函数传递的参数不应该用字典类型,要传不同字段的参数…...
2024年河北省职业院校技能大赛云计算应用赛项赛题第2套(私有云)
#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…...
我的软件架构师——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 信号的几个潜在问题,这些问题可能导致不可靠的操作,甚至在起飞时坠毁。这些主要发生在较大的四轮飞机上,这些飞机从动力和自动驾驶仪到 E…...
Postman最新接口自动化持续集成
学习地址:https://www.bilibili.com/video/BV1VDC5Y7EJA?spm_id_from333.788.videopod.episodes&vd_source336a0b0a2ff09832b3a55c3599ffb193&p9 1、旧版:PostmanNewmanAllureJenkins 缺点:需要安装较多软件,脚步需要手…...
windows nacos安装配置
GitHub下载压缩包 解压目录(注意不要用中文路径) 在mysql先创建数据库nacos,再执行sql脚本 配置数据库 #*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: ### Deprecated conf…...
重温设计模式-外观模式和适配器模式的异同
文章目录 目的不同适配器模式:外观模式: 结构和实现方式不同适配器模式:外观模式: 对客户端的影响不同适配器模式:外观模式: 目的不同 适配器模式: 主要目的是解决两个接口不兼容的问题&#…...
数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误
文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户(也可以修改所有者权限) 背景 故障报错: nginx报错信息: 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…...
云原生后端开发(一)
云原生后端开发 云原生(Cloud-Native)是指一种构建和运行应用程序的方式,它充分利用了云计算的特点,比如弹性伸缩、自动化部署、容器化等。在云原生的架构下,后端应用通常具备高度可扩展、可维护、易于自动化管理的特…...
实现用户登录系统的前后端开发
**一、**实验名称 实现用户登录系统的前后端开发。 **二、**参考资料 Web开发技术第一章课件。 **三、**实验目的 1.练习前端基本技术的使用。 2.练习使用Servlet/JSP开发简单后端程序。 3.练习使用Tomcat发布Web应用。 4.练习使用Spring Boot开发简单的后端程序。 **…...
双刃剑下的机遇与风险:交易中的杠杆效应
做外汇交易的人都会不可避免地需要考虑交易的杠杆大小。在这个市场中,杠杆效应作为一种关键的金融工具,不仅为投资者提供了放大收益的机会,同时也带来了更高的风险。今天,EagleTrader想与广大交易员一起深入探讨这个不可或缺的要素…...
伏羲0.13(文生图)
确保伏羲0.12(文生图)注释和GUI显示均为中文,项目文件夹名称为中文,并提供使用说明。此外,我将完善风格迁移的确定及训练函数和代码。以下是完整的Python文件和相关说明。 项目结构 文本生成多模态项目/ ├── conf…...
深度学习blog-卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Network,CNN)是一种广泛应用于计算机视觉领域,如图像分类、目标检测和图像分割等任务中的深度学习模型。 1. 结构 卷积神经网络一般由以下几个主要层组成: 输入层:接收…...
深度学习中的残差网络、加权残差连接(WRC)与跨阶段部分连接(CSP)详解
随着深度学习技术的不断发展,神经网络架构变得越来越复杂,而这些复杂网络在训练时常常遇到梯度消失、梯度爆炸以及计算效率低等问题。为了克服这些问题,研究者们提出了多种网络架构,包括 残差网络(ResNet)、…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
