新浪研发中心笔试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
新浪研发中心笔试题
新浪网研发中心聘请笔试题
姓名:申请职位:
一、开发能力部分:
通用题
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. 请说出你使用过的监控软件,并分析他们的特点。