新浪网研发中心招聘笔试题



    一、开发能力部分:

    通用题

1. 尽可能多的写出各种语言的 hello world! 程序(C、Shell、Perl、Python、Java等等 


C语言部分

1. 判断ABCD四个表达式是否正确, 若正确, 写出经过表达式中 a 的值

   

  int a = 4;
     (A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
     a = ?
 


2. 请问运行下面的 test 函数会有什么样的结果

    

 char *allocate (void) {
         char p[] = "hello world";
         return p;
     }
 
     void test (void) {
         char *str = NULL;
         str = allocate();
         printf("%s\n", str);
     }
 
 


3. 比较 char *p 和 char p[10] 的区别

 

4. 完成如下所示的宏定义,其作用是将接收到的两个参数的值互换

     #define EXCHANGE(x, y) \  // start here


5. 在不利用其他函数的情况下,完成如下所示的函数,其功能是将src所指向的n

个字节的内容,复制到dest所指向的位置

     void memcopy(void *dest, void *src, size_t n) {

         // start here

     } 

 

6. 完成下面的程序,其功能是利用两个线程同时执行 print_a 和 print_b 两个函数

     

void print_a () {
         printf("A\n");
     }
 
     void print_b () {
         printf("B\n");
     }
 
     int main (int argc, const char **argv) {
         // start here
 
         return 0;
     }
 


7. 当执行上题中的程序时,"A"和"B"以不定的顺序打印到屏幕上,请对上题的程

序进行改进,要求如下:

 

     1). 两个线程同时执行函数 print_a 和 print_b

     2). "A"和"B"能够依次打印到屏幕上,即"A", "B", "A", "B", "A", ....

 

8. 根据如下的单向链表结构,写出一个函数用于将其参数中指定的链表进行反

转,其返回值为新链表的头

    

struct link_list {
         char *value;
         struct link_list *next;
     };
 
     struct link_list *reverse(struct link_list *l) {
         // start here
     }
 


9. 编写一个程序,判断给定的单向链表是否是回文的,其中,链表的结构如上题

所示,回文定义如下:

     对于给定的单向链表,如 'A' -> 'B' -> 'C' -> 'B' -> 'A', 其中

'A','B','C'为链表节点所存储的值,

     如果链表中的值是关于中心对称的,则称这个链表是回文的

   

  int is_palindrome(struct link_list *l) {
         // start here
     }
 


SHELL 部分 (实现下面要求的SHELL脚本, 可以使用perl, sed, awk等)

1. 文本分析

     按要求使用两种方法取出password中shell出现的次数

     第一种方法结果:

       4 /bin/bash

       1 /bin/sync

       1 /sbin/halt

      31 /sbin/nologin

       1 /sbin/shutdown

     第二种方法结果:

     /bin/sync       1

     /bin/bash       1

     /sbin/nologin   30

     /sbin/halt      1

     /sbin/shutdown  1

 

{

A[$7]++

}

       END{

For (x in a

Print x,a[x]

}

Awk –F : a.awk


2. 文件整理

     employee文件中记录了工号和姓名

     employee.txt:

         100 Jason Smith

         200 John Doe

         300 Sanjay Gupta

         400 Ashok Sharma

 

     bonus文件中记录工号和工资

     bonus.txt:

         100 $5,000

         200 $500

         300 $3,000

         400 $1,250

 

     要求把两个文件合并并输出如下

     处理结果:

         400 ashok sharma $1,250

         100 jason smith  $5,000

         200 john doe  $500

         300 sanjay gupta  $3,000 

3. 打印本机的交换分区大小

     处理结果示例:

         Swap:1024M

Free –m | awk –F : '$1~/swap/{print $2}' |awk ' {print } 

 

4. 打印当前sshd的端口和进程id

     处理结果示例:

               port  pid

         sshd: 22    5412

awk ‘$1~/^port/{print $2}’ /etc/ssh/sshd_config

pidof sshd

 

#!/bin/bash

Ifconfig eth0 |awk –F “: | +” ‘/Mask/{ print $4}’


5. 输出本机创建20000个目录所用的时间

     处理结果示例:

         real    0m3.367s

         user    0m0.066s

         sys     0m1.925s


6. 在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文

件new中

Find /tmp –name “abc*” –exec hend -1 {}

 

7. 把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数

 

二、系统能力部分

1.     说明linux内核与linux发行版的关系,列举一些内核提供的功能和发行版提供的功能来说明其区别。

2.     描述linux的一般启动过程,从bootloader到出现login。 

 3.   列举linux常见的本地文件系统和网络文件系统,并说明其适合的应用场景。

 4.    列举linux中常用的性能和问题分析工具,并简单举例如何用这些工具来分析实际问题。

 5.     说明系统调用和库函数的区别。

 6.     描述tcp协议建立连接和断开连接的过程。

 7.     请说明poll() select() 和epoll()的区别

8.     列举常见的虚拟化技术,并说明其优缺点。

9.  请描述LVS的DR方式实现原理。

10.请说明NAS和SAN的区别和共同点。以及列举出适合的使用场景。

11.写出你曾使用过的高可用集群的产品。并描述其特点。

12.请解释这个shell脚本的含义:

       :() { :|:& }; :

13.  请说出你对apache,nginx,squid和其他你知道的web应用软件的特点的理解。

14.请说出你对mysql和oracle数据库的特点的理解,并描述其适用场景。

15.你是怎么看待系统运维工作的?

16.请简要分析LB集群4层实现和7层实现的优缺点。

17. 请说出你使用过的监控软件,并分析他们的特点。

个人资料
onemore
等级:8
文章:133篇
访问:11.8w
排名: 4
上一篇: 新浪2011笔试题
下一篇:新浪技术部PHP工程师的笔试题
猜你感兴趣的圈子:
新浪笔试面试圈
标签: awk、sbin、print、链表、sshd、面试题
隐藏