8

来源:互联网 发布:两个向量的协方差矩阵 编辑:程序博客网 时间:2024/06/11 04:16

近期找工作的过程中,因为自己比较喜欢C/C++,对多线程以及网络方面比较熟悉,

     所以下面的这些问题是这段时间在面试过程中被问到了,现在对这些问题进行了汇总!!

     面试过程真的是一个非常好的学习过程,下面那些问题自己现在基本可以解决,

     我的答案或者观点就不给出了,看到这篇文章的同学可以根据自己的情况,测试一下自己....哈哈...

     也可以当成一次学习的过程,网上搜索出来的结果可能会更详细。。。动手吧。。。

    

一、网络(主要是TCP/UDP)

(1)、TCP的三次握手连接:两端主机状态(SYN_SEND,SYN_RECV,ESTABLISH),数据包类型(SYN,ACK),整体过程

(2)、TCP的四次挥手:主机状态(FIN_WAIT_1,FIN_WAIT_1,TIME_WAIT,CLOSE_WAIT,LAST_ACK,CLOSED),数据包类型(FIN,ACK),

问题1:TIME_WAIT状态有什么用?时间有多长?

问题2:四次挥手中,服务端接收到FIN包后,回应ACK包后,还能否继续发送数据?为什么服务端把ACK包和FIN包分开发送?

问题3:TCP协议的RST包有什么用?

http://blog.csdn.net/guowenyan001/article/details/11766929

http://my.oschina.net/costaxu/blog/127394

问题4:TCP协议里的PSH包和URG包的区别?

URG标志 URG 紧急指针有效。当URG=1时,表示分段中有紧急数据应当加速传送。

PSH标志 PSH 紧急位。当PSH=1时,要求发送方马上发送该分段,而接收方尽快的将报文交给应用层,不做队列处理。


URG=1,表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),不进入接收缓冲(一般不都是待发送的数据要先进入发送缓存吗?就直接交给上层进程,余下的数据都是要进入接收缓冲的;一般来说TCP是要等到整个缓存都填满了后再向上交付,但是如果PSH=1的话,就不用等到整个缓存都填满,直接交付,但是这里的交付仍然是从缓冲区中交付的,URG是不要经过缓冲区的,千万记住!


问题5:TCP包中紧急指针有什么用?那部分为紧急数据?

问题6:TCP的可靠传输机制有哪些?

问题7:TCP和UDP以及IP三者的区别?

问题8:TCP包和UDP包的长度?

问题9:TCP传输的效率和UDP传输的效率的讨论。。

问题10:ping命令使用的是什么协议?实现的原理?

问题11:输入一个链接到游览器显示页面的整个过程?尽量详细说出来

问题12:如果打开一个链接打不开,如果去查找原因?

问题13:ARP获取物理地址(MAC地址)的过程?

问题14:DDoS攻击的原理?有哪些方式(an:如SYN洪)?如果防止这种攻击?

推荐博文:

http://kb.cnblogs.com/page/144577/

http://blog.csdn.net/dog250/article/details/6612496

http://blog.csdn.net/dog250/article/details/6896949

 

二、多进程多线程

问题1:多进程和多线程的联系和区别?

问题2:多线程的同步和互斥机制?(注:有些机制只能用于互斥)

问题3:临界区和互斥量的区别? (注:一个不是内核对象,一个是内核对象)

问题4:多进程的通信机制?

问题5:死锁的原因和条件? (注:三个原因和四个必要条件)

问题6:fork()函数的应用? (注:2013腾讯软件开发笔试题)
for(i = 0; i < 2;i++)
{
    fork();
    printf("-"); //输出多少个‘-’号? 若改为printf("-\n");那么结果又有多少个?
}

问题7:进程地址空间结构? (注:用户地址空间:低到高:代码区、data区,bss区,堆区、....(映射区)、栈区)

问题8:使用内存共享机制时,内存映射到进程地址空间的什么位置?

 推荐博文:

http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/index.html

http://www.cnblogs.com/bizhu/archive/2012/10/09/2717293.html

 

三、C/C++方面的问题

问题1:多态实现机制?虚表的原理?

问题2:虚继承时,对象的内存空间结构以及虚表结构? (注:深度探究C++对象模型那本书有详细介绍)

问题3:智能指针实现原理? (注:auto_ptr,shared_ptr,weaked_ptr...)

问题4:new和delete、malloc和free的问题?

问题5:const、#define以及inline的区别

问题6:vector内部的内存维护原理?有什么缺点? (注:迭代器失效)

问题7:vector释放内存方式?写出代码 (注:一种是强制调用其析构函数)

问题8:内存对齐问题? (注:可以使用#pragma pack()处理)

问题9:类对象结构问题?static变量放在内存的哪个区?static函数呢?类对象大小的计算?

问题10:继承过程中,派生类对象结构的变换?虚表的变换

问题11:覆盖和重载的区别?

问题12:MFC中为什么使用消息映射机制而不使用继承机制实现?

问题13:消息队列和消息映射之间的联系和区别

 推荐博文:

http://blog.csdn.net/jimmy54/article/details/5418766

(内存池的介绍,相当详细):

http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html#ibm-pcon

 

四、海量数据处理已经分布式方面问题(我只是了解的水平..哈哈..还在学习中...)

问题1:海量数据处理的思想?

问题2:海量数据处理一般会使用到的方式?

问题3:了解哪里分布式系统? (注:我当时介绍了MapReduce,其实可以从GFS,BigTable以及MapReduce入手,以及三大技术的应用,Hadoop)

 推荐博文:

http://blog.csdn.net/opennaive/article/details/7514146

http://blog.csdn.net/opennaive/article/details/7483523

http://blog.csdn.net/opennaive/article/details/7532589

http://dongxicheng.org/category/mapreduce/

http://www.cnblogs.com/lovexinsky/archive/2012/03/09/2387583.html

 

下图是我参加校招过程的一些记录,我是在这样的一个过程中成长的....哈哈...带有一些吐槽哈...

因为花一天重新修改了简历,360那里成为完美分割线。。。。不辜负我的心血...

引用:“多点不会发财,少点不会饿死,关键是兴趣就是工作,工作就是兴趣,人生也就这样,做到自己的定位很重要。”

发现这句话对于一个应届生相当重要!!很多同学现在只看重待遇怎么样!!然后就直接签了!!希望还在找工作中的

同学好好体会一下我上面引用的那句话。

 

原创粉丝点击