您的位置:首页 > 运维架构

百度北京运维电话一面

2014-08-13 18:54 190 查看
问了挺多问题的,都是很基础的,之前就听在运维的师兄说运维需要相当底层的知识,现在体会到了~~

问题记录如下

1)进程和线程的区别?Java线程和Linux线程的区别?

答:进程是程序的执行,是动态的概念,是计算机分配资源的基本单位; 线程是由进程产生的,多个线程可以负责执行不同的任务,提高并发程度。(线程是CPU调度的基本单位这个没答)

2)Linux软链接和硬链接的区别?

3)TCP关闭链接的过程是?(四次挥手)

答:1.客户端和服务器端都可以发起关闭链接,发起的一方称为主动方; 2.主动方发送包含FIN=1报文,表示希望结束链接,这是一次挥手; 被动方接收后,发送包含ACK确认的报文给主动方,主动方接收到后关闭向被动方发送的通道,这是二次挥手; 当被动方数据传输完毕要关闭连接时,同样发送包含FIN=1的报文,这是第三次挥手; 主动方接收后响应ACK,被动方收到后关闭连接, 这是第四次挥手。至此,连接关闭。

4)简述下计算机网络流量控制。

答:TCP通过滑动窗口实现流量控制。因为具体记不清了,就如实说了,这题勉强通过。

5)什么是“线程安全”?Linux怎么实现进程间通信的?

答:“线程安全”是指多个线程对共享资源的访问保持一致性。可以通过设置锁实现。。

进程间通信,可以通过Socket编程实现。。面试官说这是一种方式,但不是最常用的, 问最常用的方式都有什么?

关于线程/进程间通信可以参考 http://blog.csdn.net/kobejayandy/article/details/18863543
6)设计一个时间效率高的算法,将多个有序队列合并成一个有序的队列。假设内存可以一下子放下,空间复杂度不考虑。

答:用两两有序队列合并成新的有序队列的方式。面试官提示有更好的。没想出来,pass掉。

7)C++里面引用和指针的区别?Java里面有指针或者引用么,怎么实现的?

答:引用是变量的别名,实现上可以用常量指针实现。引用一经定义就必须绑定到某个变量,并且以后不能绑定其他元素,对引用的操作就是对变量的操作。而non const指针比较灵活,在定义之后可以改变其值使它指向另外的内存,但这种灵活性也给程序的安全带来隐患,比如由于某些原因导致指针所指向的内存是未定义的等等。C++推荐使用引用,并且如果没有修改数据的必要,建议使用const引用。

Java到处都是指针和引用,只是对普通用户是透明的。因为JAVA和垃圾收集机制,所以普通用户不用担心内存管理。

8)如果你是设计语言的,阐述下你怎么设计malloc。

不会。。

9)问我擅长哪一方面,我答毕业课题是无线网络协议方面的,了解的比较多。然后面试官问协议和实现有区别么,有的话区别是什么?

答:协议是通信双方的一种约定,比如数据发送的格式、顺序等,实现是指具体的方法,两者是完全不同的概念。面试官说回答正确。

==The End==
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: