百度面试PHP题_百度面试php题
百度面试PHP题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“百度面试php题”。
## 甲和乙各自清楚自己的钱包里有多少钱。
现在他们的朋友丙分别察看二人的钱包后,宣布:
“其中一个钱包里的钱是另一个的两倍。你们是否愿意互换钱包?”
于是甲盘算:我有 x 元钱,则乙有 2x 或者 x/2 元钱。
如果换,我将赚 x 元或亏 x/2 元,总体来看还是赚了。于是他愿意换。
同样乙也这么想。phperz.com
也就是说,互换之后二人的收益之和应该是正数,是双赢的。
但从旁观者的角度显然不是这样。
那么请问他们的想法错在哪里?
www.daodoc.com
####
phperz.com
三个枪手,命中率分别是80%,60%,40%。三个人自由射击,每个人都以击倒别人保存自己为目的。
phperz.com
假如三个人都只有一发子弹,子弹射光后,谁死掉的可能性最大?推理过程?
#####
A厂有1万个工人,编号0-9999,(EE[10000]),1个厂长(GG)分派任务,1个监工(MM)管理工人.厂子忙的时间不确定,可能突然很忙,1天接到任务5000多个,1个任务只能分配给1个工人做,也可能好几十天没新任务.厂长分配任务给这1万个工人干,按工人编号一个一个来,到最后一个工人就又从头开始,任务完成时间各不相同,可能一个工人在分配任务的时候手里还有任务,就得换下一个。
但是这1万个工人都很懒,领到了任务先不做,需要监工1个1个去问,如果工人有任务,就做,如果工人没任务,则不做。
厂长只管分任务,1个1个来,可能几天也没新任务,不累;
但是监工很累,监工每天都要看所有工人的情况,即使这些工人都没有任务,实际上每天工人(80%左右)是没任务的,请问,怎么让监工的工作轻松下来.比如说每天只问1小半工人.php程序员之家
### phperz.com
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
##
www.daodoc.com
1.假设Apache产生的日志文件名为acce_log,在apache正在运行时,执行命令mv acce_log acce_log.bak,执行完后,请问新的apache的日志会打印到哪里,为什么?
1、新的日志会打印在acce_log.bak中,因为apache启动时会找到acce_log文件,随时准备向文件中加入日志信息,虽然此时文件被改名,但是由于服务正在运行,因为它的inode节点的位置没有变,程序打开的fd仍然会指向原来那个inode,不会因为文件名的改变而改变。apache会继续向已改名的文件中追加日志,但是若重启apache服务,系统会检查acce_log
文件是否存在,若不存在则创建。
2.在Shell环境下,如何查看远程Linux系统运行了多少时间?
2、监控主机执行: h user@被监控主机ip “uptime”
这样得到了被监控主机的uptime 3.处理以下文件内容,将域名取出并进行计数排序,如处理: http://www.daodoc.com/ http://www.daodoc.com/
http://post.baidu.com/ phperz.com http://mp3.baidu.com/ http://www.daodoc.com/ http://post.baidu.com/ 得到如下结果:
域名的出现的次数 域名www.daodoc.com post.baidu.com 1 mp3.baidu.com
可以使用bash/perl/php/c任意一种
3、[root@localhost shell]# cat file | sed-e ' s/http:////'-e ' s//.*//' | sort | uniq-c | sort-rnwww.daodoc.compost.baidu.commp3.baidu.com [root@codfei4 shell]# awk-F/ '{print $3}' file |sort-r|uniq-c|awk '{print $1“t”,$2}' 3
www.daodoc.com
phperz.com
post.baidu.com 1
mp3.baidu.com phperz.com
4.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如
把0123456789作为基准的字串字符表,产生一个6位的字串642031,打印出的字串为
130246,可使用bash/perl/php/c任意一种.4、[root@localhost
~]#
awk
-v
count=6
'BEGIN {srand();str=“0123456789”;len=length(str);for(i=count;i>0;i--)marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i--)printf(“%c”,marry[i]);printf(“n”);for
phperz.com
(i=0;i
5、Linux系统中“/proc”是个伪文件目录,不占用系统空间,及时的反应出内存现在使用的进程情况......其中许多文件都保存系统运行状态和相关信息
对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息: cpuinfo
主机CPU信息 filesystems
文件系统信息 meninfo
主机内存信息 version
Linux内存版本信息 diskstatus
磁盘负载情况
另外top命令可以动态的显示当前系统进程用户的使用情况,而且是动态的显示出来,尤其是在该命令显示出来的对上方对系统的情况进行汇总.free命令呢可以查看真实使用的内存
一般用free-m 使用lsof、ps-aux 可以查看详细的每个进程的使用状况 phperz~com dmesg 也是常用来查看系统性能的命令
#题目:有10台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/分区适用率大于80%,就发邮件报警放到crontab里面,每10分钟检查一次 #测试机器:虚拟机Linux as 4
#1.首先建立服务器间的信任关系。拿两台机器做测试 本机ip:192.168.1.6 [root@codfei ~]# h-keygen-t rsa Generating public/private rsa key pair.Enter file in which to save the key(/root/.h/id_rsa): /root/.h/id_rsa already exists.Overwrite(y/n)? y(以为我是第2次建立关系所以此处覆盖原来的文件)Enter paphrase(empty for no paphrase):(直接回车无须输入密钥)Enter same paphrase again: Your identification has been saved in /root/.h/id_rsa.Your public key has been saved in /root/.h/id_rsa.pub.The key fingerprint is: 04:37:13:2a:4b:10:af:c1:2b:03:3f:6b:27:ce:b9:62 root@codfei [root@codfei ~]# cd.h/ www.daodoc.com [root@codfei.h]# ll-rw-------1 root root 883 Apr 25 17:51 id_rsa-rw-r--r--1 root root 221 Apr 25 17:51 id_rsa.pub-rw-r--r--1 root root 442 Apr 25 17:37 known_hosts id_rsa是密钥文件,id_rsa.pub是公钥文件。
[root@codfei.h]# scp id_rsa.pub192.168.1.4:/root/.h/192.168.1.6 root@192.168.1.4's paword: id_rsa.pub
100% 221
0.2KB/s
00:00 这里把公钥文件取名为本机的ip地址就是为了以后和更多的机器建立信任关系不发生混淆。现在登陆到192.168.1.4机器
[root@codfei ~]# cd.h/ [root@codfei.h]# cat 192.168.1.6 >> authorized_keys 然后回到192.168.1.6机器直接
[root@codfei.h]# h 192.168.1.4 Last login: Wed Aug 8 12:14:42 2007 from 192.168.1.6 php程序员站
这样就可以了,里面偶尔涉及到权限问题。一般./h文件夹是755 authorized_keys为600或者644 www.daodoc.com
####脚本如下
##
phperz~com
#!/bin/bash
#SCRIPT:df_check.sh
#Writeen by codfei Mon Sep 3 07:25:28 CST 2007
#PURPOSE:This script is used to monitor for full filesystems.##Begining
##### FSMAX=“80” remote_user='root' #####完全可以不用root
remote_ip=(192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14)###这里填写你要监控的主机ip
ip_num='0' while [ “$ip_num”-le “$(expr ${#remote_ip[@]}-1)” ] do
read_num='1'
h “$remote_user”@“${remote_ip[$ip_num]}” df-h > /tmp/diskcheck_tmp
www.daodoc.com
grep '^/dev/*' /tmp/diskcheck_tmp|awk '{print $5}'|sed 's/%//g' > /tmp/diskcheck_num_tmp
while [ “$read_num”-le $(wc-l
do
size=$(sed-n “$read_num”'p' /tmp/diskcheck_num_tmp)
if [ “$size”-gt “$FSMAX” ]
then
$(grep '^/dev/*' /tmp/diskcheck_tmp|sed-n $read_num'p' > /tmp/disk_check_mail)
$(echo ${remote_ip[$ip_num]} >> /tmp/disk_check_mail)
php程序员站
$(mail-s “diskcheck_alert” admin
fi
read_num=$(expr $read_num + 1)
done
ip_num=$(expr $ip_num + 1)done
php程序员站
######over
####
##让脚本每十分钟执行一次
###### 在cron表中加入
0/10 * * * * /home/codfei/diskcheck.sh 2>&1
www.daodoc.com
php程序员站
#### 比如,ext2文件系统,如果异常死机,开机如何修复文件系统? 如果异常关机,比如断电,通知机房的人开机之后,我们需要远程修复、检查文件系统 除了/分区之外,其他的分区: umount /home fsck-y /home / 分区需要开机之后,由机房的人来扫描 随后我们再登录并扫描/home等其他分区 如何查看一个进程所使用的文件句柄? 看这里面 /proc/进程号/fd/ 的个数就行了
简单的比如如何查看apache进程数 [root@localhost fd]# ps-ef|grep httpd|wc-l 1 如何统计apache的每秒访问数? tail acce_log | awk '{print $1,$4}' [root@localhost logs]# grep-c `date-d '3 second ago' +%T` acce_log 0
#
1、/proc/sys 子目录的作用
该子目录的作用是报告各种不同的内核参数,并让您能交互地更改其中的某些。与 /proc 中所有其他文件不同,该目录中的某些文件可以写入,不过这仅针对 root。
php程序员站
其中的目录以及文件的详细列表将占据过多的篇幅,而且该目录的内容是依赖于系统的,而大部分的文件也仅仅对某些特殊的应用程序有用。然而,以下是该子目录的两个最常见的用途: www.daodoc.com
允许路由:即便是 Mandrakelinux 默认的内核也是允许路由的,您必需显式允许它这么做。为此,您只要以 root 身份键入以下命令:
phperz.com
$ echo 1 >/proc/sys/net/ipv4/ip_forward
www.daodoc.com
如果您要禁用路由,请将上述命令中的 1 改为 0。www.daodoc.com
阻止 IP 欺骗:IP 欺骗会让人认为某个来自于外部的某个数据包是来自于它到达的那个接口。这一技术常被骇客(cracker)所使用。您可以让内核阻止这种入侵。请键入:
www.daodoc.com
$ echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
www.daodoc.com
这样,这种攻击就不再可能了。phperz~com
这些改变仅当系统运行时有效。在系统重新启动之后,它们会改会它们的默认值。要在启动时就改动这些值,您可以将您在 shell 提示符后键入的命令添加到 /etc/rc.d/rc.local 中以免每次都键入它们。另一个方法是修改
www.daodoc.com
/etc/sysctl.conf2、将一个文本的奇数行和偶数行合并,第2行和第3行合并 [root@localhost bin]# cat 1 48
Oct
3bc1997 lpas
68.00
lvx2a
484
Jan
380sdf1 usp
78.00
deiv
344 483
nov
7pl1998 usp
37.00
kvm9d
644 320
aug
der9393 psh
83.00
wiel
293 231
jul
sdf9dsf sdfs
99.00
werl
223 230
nov
19dfd9d abd
87.00
sdiv
230 219
sept
5ap1996 usp
65.00
lvx2c
189
php程序员站
216
Sept
3zl1998 usp
86.00
kvm9e
234 [root@localhost bin]# sed '$!N;s/n/ /g' 1 48
Oct
3bc1997 lpas
68.00
lvx2a
484
Jan
380sdf1 usp
78.00
deiv
344 483
nov
7pl1998 usp
37.00
kvm9d
644 320
aug
der9393 psh
83.00
wiel
293 231
jul
sdf9dsf sdfs
99.00
werl
223 230
nov
19dfd9d abd
87.00
sdiv
230 php程序员站
219
sept
5ap1996 usp
65.00
lvx2c
189 216
Sept
3zl1998 usp
86.00
kvm9e
234 [root@localhost bin]# sed-n-e 2p-e 3p 1|sed '$!N;s/n/ /' 484
Jan
380sdf1 usp
78.00
deiv
344 483
nov
7pl1998 usp
37.00
kvm9d6443、read 命令5秒后自动退出 [root@localhost bin]# read-t 54、自动ftp上传 #!/bin/sh ftp-n
//用户名codfei 密码duibuqi binary prompt off
//关闭提示 mput test
//上传test close bye END_FTP
自动h登陆 从A到B然后再到c #!/usr/bin/expect-f www.daodoc.com
set timeout 30 spawn h codfei@B expect “paword:” send “ppppppr” expect “]*” send “h codfei@Cr” expect “paword:” send “ppppppr” interact phperz.com
5、#打印第一个域 [root@localhost bin]# cat 3 eqeqedadasdD eqeqdadfdfDD fdsfdsfQWEDD DSADASDSADSA [root@localhost bin]# [root@localhost bin]# [root@localhost bin]# awk-F “” '{print $1}' 3 e e f D6、实现字符串翻转 [root@localhost bin]# cat 8 qweqewqedadaddas [root@localhost bin]# rev 8 saddadadeqweqewq phperz.com
挑战一下!百度面试题!
一、选择题:15 分 共 10 题
1.任何一个基于“比较”的内部排序的算法,若对 6 个元素进行排序,则在最坏情况下所需的比较次数至少为____。
A.10 B.11 C.21 D.36
2.关系模型有三类完整性约束,定义外键实现的是:
A.实体完整性 B.参照完整性 C.用户定义的完整性 D.实体完整性、参照完整性和用户定义的完整性
3.64 位 Linux 系统和机器,int 类型、long 类型分别占用多大的空间(字节数): A.4, 4 B.4, 8 C.8, 4 D.8, 8
4.下面说法正确的是:
A.根据gprof统计的程序运行时函数调用次数及执行时间,进行程序代码优化,这是 amdahl 定律的应用
B.计算机网络设备的缓冲区是时间和空间局部性原理的应用 C.局域网内的计算机发送数据包的数学模型遵循泊松分布
D.分支预测使用先前运行时得到的配置文件,这是依据正态分布
5.下列叙述正确的是: A.#define fun(x,y)(x/y)Int I = fun(2+4, 3);I 的值为 2 B.var++ 与 ++var 没有区别
C.C++ 程序,抛出异常时,一定会发生异常对象的拷贝过程
D.quick sort 是一种稳定排序。php程序员站
6.上下文无关文法是一种____。
A.左线性文法 B.右线性文法 C.正则文法 D.以上都不上
7.关系表达式!(A&&(B||C))和下面哪个表达式表达的意思一致:
A.(!(A&&B))||(!(A&&C))B.(!(A&&B))&&((!A)||(!B))C.(!(A||B))&&(!(A&&B))D.(!A)||((!B)||(!C))
8.设 int x=4;则执行以下语句 x+=x-=x-x--;后,x 的值为: A.-1 B.5 C.7 D.11
9.以下 IO 函数中,哪个是流式 IO 函数: A.read B.fread C.mmap D.recv
10.已知: struct st {
int n;
struct st *next;};static struct st a[3]={1, &a[1], 2, &a[2], 3, &a[0] }, *p;如果下述语句的显示是 2,则对 p 的赋值是____。printf(“%d”, ++(p->next->n));A.p=&a[0];B.p=&a[1];C.p=&a[2];D.p=*a;
二、简答题:20 分,共 2 题
1.(10 分)已知某种线上服务存在 3 种异常 D1, D2, D3,根据每天在固定时间段长期人工监控的统计结果,3 种异常的发生率是:D1 0.28%, D2 0.12%, D3 0.32%。现开发一种监控程序,分别对这三种异常做监控,如果发现某种异常就发出相应报警。记无异常为 D4,无报警为 A4。在各种异常情况下发出报警的溉率如下表:
php程序员站
D1 D2 D3 D4
A1 0.90 0.06 0.02 0.02 A2 0.05 0.80 0.06 0.01 A3 0.03 0.05 0.82 0.02
A4 0.02 0.09 0.10 0.95
请评价该监控程序的敏感性和正确性。
2.(10 分)以下是一个常驻内存的 C 程序,请问程序中有什么问题? int f(int number){
FILE * fp;
char file_name[20];
int sum=0;
for(int i = 0;i
{
if(0 == i % 30)
{
sprintf(file_name, “file_%d.txt”, i / 20);
fp = fopen(file_name, “r”);
if(fp == NULL)return-1;
}
sum += i;
}
fclose(fp);
return sum;}
三、编程题:30 分 共 1 题
注意:要求提供完整代码,如果可以编译运行酌情加分。
1.一条 1 百万节点的单向链表,链表所有节点是按 value 字段从小到大的顺序链接;下面是一个节点的结构
typedef struct node_t{
int value;/* 节点排序字段 */
int group;/* 组号: 0,1,2,3,4,5,6,7,8,9 */ php程序员站
struct node_t *pnext;/* 下个节点的指针 */ }node_t;
node_t head;/*该单向链表的头节点,全局变量 */
试设计程序:针对各个 group(0-->9),根据 value 字段排序,输出各组 top 10 的节点。(top10 是从小到大,取后面的大值 top10)
要求:尽量减少计算复杂度、遍历次数,不允许大量的辅助内存
四、设计题:35 分 共 1 题
注意:请尽可能详细描述你的数据结构、系统架构、设计思路等。建议多写一些伪代码或者流程说明。
1.设想网络上的一个发送者和 64 个接收者,发送者每秒有不超过 128 条的命令产生,每条命令包含一个 512 字节的头部 command_head_t 和至多 4K 字节的变长内容。command_head_t 的结构如下:
typedef struct {
int cmd_no;//该命令的命令号,唯一识别一个命令
int version;//产生该命令的程序的版本
int detail_len;//变产内容的实际长度
char *content;//指向变长内容的指针
„
} command_head_t;
发送者根据命令号将这些命令分别发送给接收者去处理,例如:发送者产生 c1,c2,c3,c4 命令,并设定将 c1,c2 命令发送到接收者 r1 和 r2,将 c2、c3,c4 命令发送到 r3。php程序员站
接收者执行接收到的命令,并相应修改自己的状态。
现在的问题是:在尽可能多的考虑各种可能的意外情况下(包括但不限于网络故障、传输错误、程序崩溃、停电„),如何设计命令的存储、发送、接收的流程,以保证命令的: 1)传输中的有序、无漏、无重复性
2)整个过程中命令和数据的正确性
3)多个同一类型的接收者(例如 r1 与 r2)的状态可以在有限时间内趋于一致 最后,请针对你考虑到的意外情况,说明所采用的避免、解决或恢复方案。www.daodoc.com