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

本文详细介绍了动态链接库与静态链接库的区别,包括它们的工作原理、优缺点。动态链接库在运行时加载,节省内存,但依赖于DLL文件;静态链接库在编译时链接,体积大但无需担心DLL地狱问题。此外,还涉及了其他笔试题目的部分内容,如构建哈夫曼树的过程、数据结构问题以及操作系统概念等。
摘要由CSDN通过智能技术生成

第一题

动态链接库和静态链接库_silverBlack-CSDN博客_动态链接库和静态链接库

之所以称为静态库,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。

试想一下,静态库与汇编生成的目标文件一起链接为可执行文件,那么静态库必定跟.o文件格式相似。其实一个静态库可以简单看成是一组目标文件(.o/.obj文件)的集合,即很多目标文件经过压缩打包后形成的一个文件。

静态链接库的优点  

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

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

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。动态库在程序运行是才被载入,也解决了静态库对程序的更新、部署和发布页会带来麻烦。用户只需要更新动态库即可,增量更新。  

动态链接库的优点 

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

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

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

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

不足之处

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

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

第二题 

O(n)的方法:利用快排的patition思想,基于数组的第k个数来调整&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值