雅虎-技术类岗位-笔试经验

以下内容来自于应聘者回忆整理

很多同学都想得到雅虎的实习或者校招机会。那从过来人的角度谈谈,要通过雅虎的实习、校招面试,都有哪些经验和注意事项呢?今天就跟大家分享一下。

1、大端小端的问题

大端和小端实际上是字节顺序与存储地址顺序相对应的两种模式,但是不管是大端还是小端, 数据一定是从内存的低地址依次向高地址读取和写入 。 比如向内存地址为 0X1000 的地址写入 0X12345678 这个四字节16进制数

2、给定一个函数,wild_match(str, pattern),给出功能测试和非功能测试的测试用例

3、给出前序中序遍历的结果,求后序遍历的结果。

(1)root最简单,前序遍历的第一节点G就是root。

(2)继续观察前序遍历GDAFEMHZ,除了知道G是root,剩下的节点必然是root的左右子树之外,没法找到更多信息了。

(3)那就观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树,G右侧的HMZ必然是root的右子树。

(4)观察左子树ADEF,左子树的中的根节点必然是大树的root的leftchild。在前序遍历中,大树的root的leftchild位于root之后,所以左子树的根节点为D。

(5)同样的道理,root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前序遍历中,一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树,并且遍历的右子树的第一个节点就是右子树的根节点。

如何知道哪里是前序遍历中的左子树和右子树的分界线呢?通过中序遍历去数节点的个数。在上一次中序遍历中,root左侧是A、D、E、F,所以有4个节点位于root左侧。那么在前序遍历中,必然是第1个是G,第2到第5个由A、D、E、F过程,第6个就是root的右子树的根节点了,是M。

(6)观察发现,上面的过程是递归的。先找到当前树的根节点,然后划分为左子树,右子树,然后进入左子树重复上面的过程,然后进入右子树重复上面的过程。最后就可以还原一棵树了。

(7)其实,如果仅仅要求写后续遍历,甚至不要专门占用空间保存还原后的树。只需要稍微改动第六步,就能实现要求。仅需要把第六步的递归的过程改动为如下:

①确定根,确定左子树,确定右子树②在左子树中递归③在右子树中递归④打印当前根。

4、死锁的必要条件。

产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

5、8 个人分成 2 组,每组 4 人,问某两个人在一组的概率是()

6、有一种疾病,患病的概率是 1/100000,医生诊断的准确率为 99%,问如果一个人被诊断出患这种病,那 么他真患这种病的概率是多少?

7、端口 22 协议

端口22通常称为TCP端口22。 但是,还有一种名为UDP的传输协议,其行为与TCP不同。 SSH需要可靠的连接,该连接仅由TCP协议提供,因此UDP端口22不是受欢迎的端口。 By default, SSH runs on TCP port 22.

8、C++程序编译出错的地方

9、A(m,n)= n+1 (when m == 0) = A(m-1,1) ( when n == 0) = A(m-1,A(m,n-1) ( when n > 0 , m>0) What is the result of A(3, 8)?

10、在矩阵里查找一个元素。矩阵的所有元素从左到右,从上到下是递增的顺序

11、有 4k+2 个数字,其他数字都出现了 4 次,有两个数字出现了 2 次,求出这两个数字,复杂度和空间复 杂度尽可能低。

12、一个矩阵 A[1] ,A[2] , …..A[n],定义 B=A[1]*A[2]*...*A[i-1]*A[i+1]*...*A[n],让你求矩阵 B[1 … n]

13、 有 n 个球,任意分成若干组,有多少种分法。如果把球编上号,不准打乱球的顺序,那样又会有多少种 分法

14、一群老鼠,给出他们的重量和速度,(weight , velocity ) 让你求出一个最长序列,以 weight 为增序,以 velocity 为降序。

15、操作系统线程和进程不共享的是() 

想要更多【技术类岗位】实习、校招的机会,请点击这里

  • 1、刺猬实习遵循行业规范,任何转载的稿件都会明确标注作者和来源
  • 2、刺猬实习的原创文章,请转载时务必注明"来源:刺猬实习",不尊重原创的行为刺猬实习或将追究责任
  • 3、作者投稿可能会经刺猬实习编辑修改或补充。

相关推荐