您的位置:首页 > 其它

阿里云·一面没回答清楚的问题盖戳留念(答案随时更新)

2015-07-14 22:55 295 查看
1、静态链接、动态链接分别是什么意思?动态链接(dll)过程是由什么完成的?

两者均是为了支持模块式开发,允许不同开发者直接相互调用各自的功能模块所设置的机制。

静态链接(Static Linking)是在程序代码编译后的链接过程中将程序所引用的静态链接库(static lib)中的内容全部导入到当前程序中的过程,其优点在于时间的开销主要集中于链接时期,因而引用库内函数的时候效率较高,而且程序运行时不需要依赖额外的内容。缺点一是静态库会被全部加载到内存中,因而有部分额外的消耗,二是当多个程序共享一个静态库的时候,其内容会分别加载到每一个进程的内存当中,没用共享复用的可能。静态链接通过导入.lib结尾的静态链接库文件实现。

动态链接(Dynamic Linking)是在程序运行时候当需要使用到某一函数功能时,动态地通过导入库文件(import library,也是.lib后缀,记载了真正动态函数库的位置信息)查找到程序所需要的系统函数,并将其所指向的dll内容的函数导入到内存中运行,整个过程由windows操作系统完成。其主要分为载入时动态链接(这需要在链接时将函数所在的dll的导入库链接到可执行文件中)和运行时动态链接(运行时可以通过LoadLibrary等函数载入dll,载入后可以通过GetProcAddress获取dll函数的入口地址,然后就可以通过返回的函数指针调用dll中的函数了,如此可以避免导入库文件)

参考链接:http://www.360doc.com/content/14/0518/08/7378868_378679524.shtml

http://www.cnblogs.com/tracylee/archive/2012/10/15/2723816.html

http://blog.163.com/zhangjie_0303/blog/static/99082706201081105654484/


http://www.cnblogs.com/kex1n/archive/2011/09/06/2168435.html
2、红黑树是什么?红黑树节点染色的作用?

红黑树是一种优化的平衡二叉树,其目标是建立局部的数据平衡,而非全局的数据平衡。它可以使得在任何情况下,每次数据查找的时间复杂度是O(logn)

如果一棵树满足以下几个性质,我们称之为一棵红黑树:

1、节点仅由红黑两种颜色组成。

2、根节点为黑色、叶子节点为黑色

3、任何节点如果其父节点为红色,其子节点必为黑色

4、任何节点到其子孙节点的路径上,黑色节点数目是一致的。

红黑节点染色的目的在于控制树的高度,使其达到局部的一个绝对平衡,因此将整体高度控制在O(logn)的位置,高度主要是受制于其第3、4点。

参考链接:http://blog.csdn.net/wdzxl198/article/details/6882416

http://blog.chinaunix.net/uid-26575352-id-3061918.html

3、TCP协议三次握手建立连接、四次挥手中断连接的全过程

这个比较简单,参考这个链接:https://www.centos.bz/2012/08/tcp-establish-close/

3、网络如何进行拥塞控制,请讲述一下拥塞控制算法执行的三个阶段

主要是通过控制发送窗口的大小来对网络进行流量控制和拥塞控制的,其拥塞控制算法有慢启动、拥塞避免和快速恢复(快速重传)三个阶段,初次接入网络时,配置发送方一个阈值threshhold并调整发送窗口为1,若接收方没有重传请求,则开始以2倍数级增大发送窗口,此过程称为慢启动,当到达阈值时进入拥塞避免阶段,窗口尺寸开始线性增长,当出现重传报文请求时,TCP机制反应剧烈,具体表现为阈值threshhold减半,同时窗口尺寸恢复到1,重新回到慢启动状态,达到对拥塞进行控制的目的。如果是进入快速重传的阶段,则是在出现重传报文(出现拥塞)的时候,窗口大小不恢复到1而是将threshhold值减半并且将窗口大小置为threshhold的数值,然后进入拥塞避免阶段。继快速重传算法后还有一个快速恢复算法,其基本原则是“数据包守恒原则”,
即保证当前时刻网络中的数据包数量总是恒定的,当接受端收到3个重复ACK之后,TCP最后进入的不是拥塞避免阶段,而是将threshhold值减半,窗口值设置为threshhold+3(因为有三个已经被确认的包离开整个网络,因而基于守恒原则需要增加发送数量),然后重传缺失的报文,随后每收到一个窗口中的重复确认,窗口大小增加1,当接收到非重复的确认时,将窗口大小设置为当前threshhold,重新进入拥塞避免阶段。

4、TCP如何保证传输的可靠性?

简述一下就好,http://blog.sina.com.cn/s/blog_63ec18bc01016gcv.html

5、详细讲述一下访问http网站的全部交互过程

网上大神们早已详述,整理清楚思路慢慢说,http://blog.csdn.net/saiwaifeike/article/details/8789624

6、Spring框架中,控制反转如何完成,其依赖注入方式有哪几种?

为此重新温习了一下spring框架的底层实现机制。总结来说就是:spring容器基于Bean工厂模式,通过解析用户自定义的xml文件获取依赖信息,当用户需要任何对象实例的时候,通过调用容器的应用程序上下文接口,从容器的hash中取出相应对象的实例并返回,从而实现对当前一系列对象及依赖的控制,此过程称为控制反转,将实例化的控制权由类调用者本身反转为通过容器进行控制,在实例返回之前,还需要进行一个依赖注入的操作,根据xml文件配置的依赖信息,spring框架运用Java的反射机制,调用实例化对象的setter方法进行引用bean或者数据的注入,同理也可以调用构造函数进行注入,因此其依赖注入方式主要有设值(setter)注入、构造函数注入和接口注入,其中前两者使用较多,接口注入侵入性太强,很少使用,故略。

7、描述一下Hibernate和struts框架

8、线程的锁机制(记不太清楚了)

9、如何在同一端口下实现不同网址的访问?

10、数据库巴拉巴拉巴拉(不记得了)?

11、当类里面定义多个类的时候其初始化过程是什么样子的?

12、virtual函数的作用(本来想答个设计模式什么的,结果死活想不起来什么设计模式了,擦)

13、GitHub如果A分支需要完整copy B分支的整个项目到当前分支用来查看,使用什么语句?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: