很多同学都想得到淘宝的实习或者校招机会。那从过来人的角度谈谈,要通过淘宝的实习、校招面试,都有哪些经验和注意事项呢?今天就跟大家分享一下。
一、单选题
1、我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在 5 分钟后死亡,而喝 到蒸馏水的小白鼠则一切正常。现在有 5 只小白鼠,请问一下,我们用这五只小白鼠,5 分钟的时间,能够检测多少瓶 液体的成分(C)
A、5 瓶 B、6 瓶 C、31 瓶 D、32 瓶
2、若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用(C)存储方式最节省时间?
A、单链表 B、带头结点的非循环双链表 C、带头节点的双循环链表 D、循 环链表
3、如果需要对磁盘上的 1000W 条记录构建索引,你认为下面哪种数据结构来存储索引最合适?(C)
A、Hash Table B、AVL-Tree C、B-Tree D、List
4、可用来检测一个 web 服务器是否正常工作的命令是(C)
A、ping B、tracert C、telnet D、ftp
解析:只有 C 可以测试 Web 主机的网页服务器是否工作正常,假设该服务器的网页服务器使用的是默认端口,则可以使用命 令 telnet hostname 80 来测试其是否工作。
5、下面哪个操作是 Windows 独有的 I/O 技术(C)
A、Select B、Poll C、IOCP D、Epoll
6、IPV6 地址包含了(D)位
A、16 B、32 C、64 D、128
7、数据库里建索引常用的数据结构是(C)
A、链表 B、队列 C、树 D、哈希表
8、在公司局域网上 ping www.taobao.com 没有涉及到的网络协议是(C)
A、ARP B、DNS C、TCP D、ICMP
解析:DNS 是将域名 www.taobao.com 映射成主机的 IP 地址,ARP 是将 IP 地址映射成物理地址,ICMP 是报文控制协议,由 路由器发送给执行 ping 命令的主机,而一个 ping 命令并不会建立一条 TCP 连接,故没有涉及 TCP 协议。
二、填空题
1、http 属于(应用层)协议,ICMP 属于(网络层)协议。
2、深度为 k 的完全二叉树至少有(2^(k-1))个结点,至多有(2^k-1)个结点。
3、字节为 6 位的二进制有符号整数,其最小值是(-32)。
4、设有 28 盏灯,拟公用一个电源,则至少需有 4 插头的接线板数(9)个。 第一个板 4 个口,此后每增加 1 个板会消耗 1 个原来的口,总的只增加 3 个口,故 N 个接线板能提供 1+3*N 个电源口。
解析:一个接线板支持4个。
每增加一个,可以多支持3个。(和接线板连接方式没关系,都是消耗1个增加4个)
所以,减4除以3向上取整加1。9个。
三、综合题
1、有一颗结构如下的树,对其做镜像反转后如下,请写出能实现该功能的代码。注意:请勿对该树做任何假设,它不 一定是平衡树,也不一定有序。 1 1 / | / | 2 3 4 4 3 2 /| / | | / / | 6 5 7 8 9 10 10 9 8 7 5 6
解析:以孩子、兄弟的存储结构来存储这棵树,使之成为一颗二叉树,然后对二叉树进行链表的转换。 view plain 1. typedef struct TreeNode 2. { 3. int data; 4. struct TreeNode *firstchild; 5. struct TreeNode *nextsibling; 6. }TreeNode,*Tree; 7. 8. void MirrorTree(Tree root) 9. { 10. if(!root) 11. return ; 12. if(root->firstchild) 13. { 14. Tree p=root->firstchild;
15. Tree cur=p->nextsibling; 16. p->nextsibling=NULL; 17. while(cur) 18. { 19. Tree curnext=cur->nextsibling; 20. cur->nextsibling=p; 21. if(p->firstchild) 22. MirrorTree(p); 23. p=cur; 24. cur=curnext; 25. } 26. root->firstchild=p; 27. } 28. } 29. 30. int main(void) 31. { 32. TreeNode *root=(TreeNode *)malloc(sizeof(TreeNode)); 33. Init(); 34. MirrorTree(root); 35. OutPut(); 36. }
2、假设某个网站每天有超过 10 亿次的页面访问量,出于安全考虑,网站会记录访问客户端访问的 ip 地址和对应 的时间,如果现在已经记录了 1000 亿条数据,想统计一个指定时间段内的区域 ip 地址访问量,那么这些数据应 该按照何种方式来组织,才能尽快满足上面的统计需求呢,设计完方案后,并指出该方案的优缺点,比如在什么 情况下,可能会非常慢? 答:用 B+树来组织,非叶子节点存储(某个时间点,页面访问量),叶子节点是访问的 IP 地址。这个方案的优点是查 询某个时间段内的 IP 访问量很快,但是要统计某个 IP 的访问次数或是上次访问时间就不得不遍历整个树的叶子节点。
答:或者可以建立二级索引,分别是时间和地点来建立索引。
四、附加题
1、在现代 web 服务系统的设计中,为了减轻源站的压力,通常采用分布式缓存技术,其原理如下图所示,前端 的分配器将针对不同内容的用户请求分配给不同的缓存服务器向用户提供服务。 分配器 / | 缓存 缓存 ...缓存 服务器 1 服务器 2 ...服务器 n
1)请问如何设置分配策略,可以保证充分利用每个缓存服务器的存储空间(每个内容只在一个缓存服务器有副本)
2)当部分缓存服务器故障,或是因为系统扩容,导致缓存服务器的数量动态减少或增加时,你的分配策略是否可 以保证较小的缓存文件重分配的开销,如果不能,如何改进? 3)当各个缓存服务器的存储空间存在差异时(如有 4 个缓存服务器,存储空间比为 4:9:15:7),如何改进你 的策略,按照如上的比例将内容调度到缓存服务器?
2、在高性能服务器的代码中经常会看到类似这样的代码: typedef union { erts_smp_rwmtx_t rwmtx; 应届生求职大礼包 应届生求职网 YingJieSheng.COM 应届生求职网 http://www.yingjiesheng.com 第 25 页 共 60 页 byte cache_line_align_[ERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))]; }erts_meta_main_tab_lock_t; erts_meta_main_tab_lock_t main_tab_lock[16]; 请问其中用来填充的 cache_line_align 的作用是?
3、 写出 C 语言的地址对齐宏 ALIGN(PALGNBYTES),其中 P 是要对齐的地址,ALIGNBYTES 是要对齐的字节 数(2 的 N 次方),比如说:ALIGN(13,16)=16 view plain 1. ALIGN(P,ALIGNBYTES) ( (void*)( ((unsigned long)P+ALIGNBYTES-1)&~(ALIGNBYTES-1) ) )
想要更多阿里巴巴实习、校招的机会。请点击这里