您的位置:首页 > 理论基础 > 计算机网络

百度实习一面回顾

2011-06-29 15:44 309 查看
原本高高兴兴的期待着在hr.baidu.com上面看着好点的结果,发现一面直接被刷。~~~~(>_<)~~~~

 

吸取经验吧。面试的是商务搜索部_机器学习算法研发实习工程师.

 

-运用大规模机器学习算法,提高在线广告投放的精准度,从而优化在线广告的相关性、变现能力与用户体验,达到技术和商业的完美结合

职位要求:

-计算机及计算机相关专业本科以上学历
-具有良好的编程开发和算法设计能力
-具有良好的分析问题和解决问题的能力,对解决具有挑战性问题充满激情
-具有机器学习方面的理论知识, 热衷于机器学习算法研究或将其应用到实际中,有相关项目经验者优先

 

首先问项目的事情,第一个介绍的是介绍自己的项目,我第一个介绍的是Book Structure Extract。 感觉一开是讲这个是一个败笔。将排序学习估计更加的贴切吧。

 

之后面试官问:SVM 与神经网络的区别时,感觉回答的不是很好,下面总结一下应该怎么回答:

 

神经网络:
1。有局部最小点
2。泛化能力差 empirical risk minimization principle,经验最小化原则。
3。隐含层节点数确定比较困难,没有严格理论依据

svm
1。没有局部最小点
2。泛化能力好于神经网络 structural risk minimization principle,结构最小化原则。
3。无需指定kernel函数数目

 

SVM针对小样本数据学习具有很强的优势
其利用支持向量来进行线性或非线性规划
具有全局收敛优势
而ANN的训练在数据样本长度不够的情况下会产生过学习的情况,即收敛后误差很小但与实际求解模型相差很远
而且ANN的目标函数一般是非凸性的
这就使得其有多个极值点
要收敛到全局最优解非常困难
另外利用ANN需要对网络初始化和网络拓扑结构进行合理设计
这一设计基本上没有什么理论依据
对于使用者的经验依赖很大

 

之后就问了一下TCP的交互是一个怎么样的过程,唉,我还是太懒了,上午的时候都被问了这个问题,也不好好的看一下。

 

TCP连接建立

 

TCP的连接建立过程又称为TCP三次握手。首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;接收方主机在收到这个请求后向送方主机回复一个同步/确认(SYN/ACK)应答;发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立;

 

TCP 与 UDP对比

 

 TCP(传输控制协议)和UDP(拥护数据报协议)是传输层的俩个传输协议,它们俩个的最大区别就是是否面向连接。

    TCP包括了面向连接和可靠数据传输服务,在客户端和服务器端进行通信前,要先交换传输层控制信息,为双方的通信做好准备。在这个握手阶段后,我们就可以 认为在这俩个进程间存在一个TCP连接,且是一个全双工的连接,在消息发送完后,应用程序会告诉TCP拆除这个连接。可靠的传输服务为了保障彼此通信能无 差错地顺序传递所有数据。
    当其中任何一个应用程序把一个字节流传如套接字时,它可以指望TCP把同样的字节流传递到对方的套接字,中间不回丢失和重传。TCP是因特网的一种公益服 务,其目的是能调节数据传输过程中的一些问题,因此还要包含一个拥塞机制。TCP拥塞机制在网络变得拥塞时阻止发送进程。确切地说,TCP拥塞控制试图把 每个TCP连接限定在它所公平共享的网络带宽上。对于有最小带宽需求限制的实时音频或视频应用来说,阻止其带宽那就让它们不能正常工作,此外,我们能想象 一下,在网络电话通话时,偶尔的不连续是可以容忍的,可见实时应用可以容忍丢失少部分数据,不需要完全可靠服务。
    说了这么多,TCP能提供的好的服务,再看一下其缺点吧,首先,TCP不保证最小传输率,通俗点说,TCP不允许发送进程以想要的速率发送数据,受到 TCP拥塞控制的调节,发送进程有可能被迫以一个较低的平均速率发送。其次,TCP不提供任何延时保障,具体点说,发送进程把数据传入自己的TCP套接字 后,这个数据将最终到达其接受套接字,但是中间所经历的时间就不能保证了 ,花几秒或则几分钟都不一定。
    UDP是一个非面向连接的轻量级传输协议,具有一个最简单的服务模型。UDP是无连接的,因此两个进程彼此通信之前没有握手过程。UDP提供不可靠的数据 传输服务,也就是说当一个进程往自己套接字发送一个消息时,UDP不能保障这个消息回最终到达接受套接字。另外,就确实到达接收套节字的消息而言,他们的 到达顺序也可能不是有序的。

    UDP不含拥塞控制机制,因此发送进程能够以任意速率往UDP套接字发送数据,尽管不能保证所有数据都到达接收套接字,但是会有相当比列的数据到达。实时应用程序的开发人员往往选择在UDP上运行他们的应用。与TCP类似,UDP也不提供任何延迟保证。
 
两个链表相交,要求找出第一个相交的节点
 

《编程之美》里面有一篇是讲如何判断两链表是否相交,读后觉得原文太过啰嗦。于是,笔者总结了一下,此类问题可以扩展为两大类,分别是:

1、单链表与环问题http://blog.csdn.net/liuxialong/archive/2011/06/20/6555850.aspx
2、单链表相交与环问题(本文)
给定两单链表A、B,只给出两头指针。请问:
1、如何判断两单链表(无环)是否相交?
有两种可取的办法:
(1)人为构环,将链表A的尾节点指向链表B,再判断是否构环成功?从链表B的头指针往下遍历,如果能够回到B,则说明相交
(2)判断两链表最后一个节点是否相同,如果相交,则尾节点肯定是同一节点
2、如何判断两单链表(不知是否有环)相交?
先判断是否有环,判断是否有环可以使用追逐办法,设置两个指针,一个走一步,一个走两步,如果能相遇则说明存在环
(1)两个都没环:回到问题1
(2)一个有环,一个没环:不用判断了,肯定两链表不相交
(3)两个都有环:判断链表A的碰撞点是否出现在链表B的环中,如果在,则相交。(相交时,环必定是两链表共有的)
3、如何寻找两相交链表(不知是否有环)的第一个相交节点?
同样,使用追逐办法先判断是否存在环,分情况讨论
(1)无环:人为构环,将链表A的尾节点指向链表B,则构成一个带环的单链表。这个问题就转换成寻找带环单链表的环入口节点。
    解法参考:http://blog.csdn.net/liuxialong/archive/2011/06/20/6555850.aspx
(2)有环:计算出两链表的长度lA、lB,(环的长度和环到入口点长度之和就是链表长度)
计算带环链表长度,可参考http://blog.csdn.net/liuxialong/archive/2011/06/20/6555850.aspx
如果lA>lB,则链表A指针先走lA-lB,然后链表B指针开始走,两者相遇的点就是相交点
如果lB>lA,则链表B指针先走lB-lA,然后链表A指针开始走,两者相遇的点就是相交点
最后就是硬伤了,没有在linux上面进行过编程。。。。。
唉,重新启程吧。
 

TCP连接关闭:发送方主机和目的主机建立TCP连接并完成数据传输后,会发送一个将结束标记置1的数据包,以关闭这个TCP连接,并同时释放该连接占用的缓冲区空间;

 

TCP重置:TCP允许在传输的过程中突然中断连接,这称为TCP重置;

 

TCP数据排序和确认:TCP是一种可靠传输的协议,它在传输的过程中使用序列号和确认号来跟踪数据的接收情况;

 

TCP重传:在TCP的传输过程中,如果在重传超时时间内没有收到接收方主机对某数据包的确认回复,发送方主机就认为此数据包丢失,并再次发送这个数据包给接收方,这称为TCP重传;

 

TCP延迟确认:TCP并不总是在接收到数据后立即对其进行确认,它允许主机在接收数据的同时发送自己的确认信息给对方。

 

TCP数据保护(校验和):TCP是可靠传输的协议,它提供校验和计算来实现数据在传输过程中的完整性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息