2025年信息公司笔试题及答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2025年信息公司笔试题及答案

第一部分技术基础题(共40分)

1.编程题(15分)

请用Python实现一个函数`find_max_subarray`,输入为一个包含正负数的整数数组`nums`,输出该数组中连续子数组的最大和。要求时间复杂度不低于O(n),空间复杂度为O(1)。

答案:

该问题是经典的“最大子数组和”问题,可通过Kadane算法解决。核心思路是维护当前子数组的和,若当前和小于0,则重置为当前元素(因为负数会拖累后续和),否则继续累加。具体实现如下:

```python

deffind_max_subarray(nums):

ifnotnums:

returnNone处理空数组情况

max_sum=current_sum=nums[0]

fornuminnums[1:]:

current_sum=max(num,current_sum+num)若current_sum为负,则取当前num重新开始

max_sum=max(max_sum,current_sum)

returnmax_sum

```

验证示例:

输入`nums=[-2,1,-3,4,-1,2,1,-5,4]`,输出应为6(对应子数组`[4,-1,2,1]`)。

2.操作系统题(10分)

简述进程与线程的区别,并说明在高并发场景下,选择多线程而非多进程的三个主要原因。

答案:

进程与线程的区别:

-进程是资源分配的基本单位,线程是CPU调度的基本单位;

-每个进程有独立的内存空间和资源(如文件描述符、全局变量),同一进程的线程共享进程资源(如堆、全局变量),仅拥有独立的栈和寄存器;

-进程间通信(IPC)需通过管道、消息队列等方式,线程间通信可直接访问共享内存,效率更高;

-进程创建/销毁的开销远大于线程(需分配/回收内存、上下文切换成本高)。

高并发场景选多线程的原因:

1.资源利用率更高:多线程共享进程内存,无需为每个任务分配独立内存空间,减少内存消耗;

2.切换开销更小:线程上下文切换仅涉及寄存器和栈的保存/恢复,远小于进程切换的内存页表切换;

3.通信效率更高:线程通过共享变量直接通信,避免了进程间复杂的IPC机制(如序列化、拷贝数据),适合高频交互场景。

3.数据库题(15分)

假设某电商数据库有如下表结构:

-`orders`表:order_id(主键,INT),user_id(INT),order_time(DATETIME),total_amount(DECIMAL)

-`order_items`表:item_id(主键,INT),order_id(INT,外键),product_id(INT),quantity(INT),price(DECIMAL)

请写出SQL语句实现以下需求:

(1)查询2025年1月1日至2025年3月31日期间,每个用户的订单总金额(需包含未下单用户,总金额记为0);

(2)查询销量最高的前10个商品(销量=各商品被购买的总数量)。

答案:

(1)需使用`LEFTJOIN`关联用户表(假设用户表为`users`,包含user_id和username),按用户分组统计总金额。若用户无订单,total_amount为0:

```sql

SELECT

u.user_id,

COALESCE(SUM(o.total_amount),0)AStotal_amount

FROM

usersu

LEFTJOIN

orderso

ON

u.user_id=o.user_id

AND

o.order_timeBETWEEN2025-01-0100:00:00AND2025-03-3123:59:59

GROUPBY

u.user_id;

```

(2)通过`order_items`表按product_id分组,求和quantity,取前10:

```sql

SELECT

product_id,

SUM(quantity)AStotal_sales

FROM

order_items

GROUPBY

product_id

ORDERBY

total_salesDESC

LIMIT10;

```

第二部分逻辑与算法题(共30分)

4.

文档评论(0)

都那样! + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档