【转】2012年7月12 – 腾讯公司 WEB高级应用开发工程师 最新面试题
腾讯面试(WEB高级应用开发工程师<PHP>)非答案啊!!!
开始正题之前,容博主啰嗦两句吧,呵呵。(你也可跳过直接到红色字体看题!)
腾讯一直是我很敬重的企业,尽管小企鹅在战略上饱受争议,正面的,负面的我就不一一列举了,但又怎样?在中国,他还是能如微软一样,渗透到每一个用户的日常生活中去,这样的成绩,恐怕在世界范围内也没有多少吧!想进去自然困难丛丛,面试周期达一个月之久。技术面试只占四分之一,剩下的都是人品关!我勒个去!你知道技术对鄙人还算凑活,可这RP,我是一直持保留意见的!不过话说回来,咱可以装么!说我就喜欢你们加班,你不加班,我跟你没完!阿门!
笔试(45 minute):(本来是四张纸,被我弄丢了一张!无伤大雅,难度级别不会有出入)
注意:由于时间紧迫和水平有限,难免有不足或错误,请指证,虚心学习!
[PHP]
写出PHP中至少5个全局变量,并说明其作用与用法。
1. $_GET :浏览器URL传递过来的QUERY部分,被PHP内核创建的全局变量。
2. $_POST:由HTTP提交(POST)过来的大文本内容,被PHP内核创建全局变量。
3. $_COOKIE :客户端保持机制所需的全局变量。
4. $_REQUEST :由以上三个变量的集合体。
5. $_SESSION :客户端与服务器端得保持机制所需变量。
写出PHP获取客户端与服务端得代码。
$_SERVER[‘REMOTE_ADDR’]
gethostbyname($_SERVER['HTTP_HOST']);
打印出前一天时间,格式:YYYY-MM-DD HH:II:SS
echo date(“Y-m-d H:i:s”,strtotime(“-1 day”));
说明include与require的区别是什么?为避免重复包含一个文件,会用?语句代替他们
1, 别包含脚本有错误时,抛出错误级别不同。前者为警告,并继续运行。后者为严重错误,并终止程序运行。
2, 返回值不同,前者有返回值,后者没有返回值
3, 前者可用于条件语句中,分支包含。后者不可。
4, include_once require_once
请写一个函数验证电子邮件的格式时候正确
<?php function vaildate_eamil($email) { if (empty($email)) return false; if (preg_match("/[0-9a-zA-Z-_]+@.[0-9a-zA-Z-_]+/", $email) !== false) return true; return false; } ?>
使用php写一段简单的查询,查出所有姓名为“张三”的内容并打印出来
表名:User
Name Tel Content Date
张三 133336633666 大专毕业 2006-10-11
张三 136336633666 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
根据上面要求完成代码:
<?php $query = mysql_query("select * from User where Name='张三'"); while ($row = mysql_fetch_row($query)) { $result[] = $row; } var_dump($result); ?>
判断一个变量是否设置函数是?判断一个变量是否为空函数是?
isset();empty();
请用PHP输出下面JSON代码,不能用字符串拼接来实现。
var jsonstr = { fruit : [ { apple : ”苹果” }, { bana : ”香蕉” }, ] }
//
<?php $str = json_decode($jsonstr); foreach ($str->fruit as $s) { echo $s->apple; echo $s->bana; } ?>
请简单描述下PHP中session的存储方式以及如何操作session
PHP将session存储在server端,client端用cookie存储对应的sessionid用于保持。
PHP中由内核建立的全局变量$_SESSION用于存取session。使用前需用session打开session会话。
PHP中如何设置错误级别,分别说明在配置文件和代码中的设置方法
配置中
error_reporting =
代码中
error_reporting()函数
[MYSQL]
有一个游戏道具赠送的营销活动,每天有1000W用户参与量,需要提供给玩家查询一天的领奖记录。数据库设计时应该注意哪些点?
提示:
1.按每天3小时(10800秒)的峰值算,1秒的峰值会有近1000的访问。
2.假设赠送环节也是需要营销活动开发侧控制,赠送是调用游戏的接口发货,游戏借口提供给单活动的发货速度是100/s。
1,用户id为主键
2,时间与用户id建立联合索引,加快搜索某一用户一天内的记录
3,1000w数据量太多,要进行水平分表。分表依据为用户id。
4,加大my.cnf中的最大链接数。为1500吧
[C]
char x[]=”abcdefg”;
char y[] = {‘a’,’b’,’c’,’d’,’e’,’f’,’g’};
下面正确的是:
A,数组x和数组y等价。
B, 数组x和数组y的长度相同
C, 数组x的长度大于数组y的长度 正确
D,数组x的长度小于数组y的长度
char str = “Hello”;
char *p = str;
int n=10;
请计算
sizeof(str) = ? 6
sizeof(p) = ? 6
sizeof(n) = ? 4
void Func(char str[100]){
请计算 sizeof(str) = ? 100
}
char *p = malloc(100);
请计算
sizeof(p) = ? 100
[HTML]
请写出下面form在提交后的URL
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action=?”login” method=?”get”>
<p>用户名<input type=text name=’name’ size=’10’ maxlength=’20’></p>
<p>密码<input type=passwd name=’pass’ ></p>
<p> <input type=submit name=’submit’ ></p>
</body>
</html>
上面的页面的url是http://www.qq.com/bbs/login.html中,如果在用户名输入username,口令输入:123456,请写出点击submit按钮后,在浏览器的显示地址的URL:?
如果将第四行的form提交方式method改为post了?
1,http://www.qq.com/bbs/login&name=username&pass=123456&submit=submit
2,http://www.qq.com/bbs/login
[UNIX]
尽量多的写出你所知道的UNIX中的信号量,以及其含义。
1, SIGHUP
退出系统发出的信号
2, SIGINT
程序中断发出信号,ctrl+c可触发
3, SIGQUIT
程序退出发出信号,会记录日志
5,SIGTRAP
中断或其他自陷指令
9,SIGKILL
结束程序,非阻塞,不可忽略
15,SIGTERM
结束程序,阻塞,会被忽略
17,SIGCHLD
子进程结束,父进程接受到此信号
运行命令ls –l 后显示下面结果
-rwxrwxrwx 1 root root 1393 jul 2 11:30 test
drwxr-xr-x 2 edit users 4096 jun 23 17:26 pay
上面每行中有7个部分表示的含义依次为:
1. 文件类型与权限
2. 文件外部被链接数。软、硬链接
3. 文件用户
4. 文件所属组
5. 文件大小
6. 文件创建日期
7. 文件名
第一行中的-rwxrwxrwx各个字母含义:
-文件类型,非目录
rwx:user拥有所有权限
rwx:group拥有所有权限
rwx:other拥有所有权限
第二行中的drwxr-xr-x各个字母含义:
d:表示为目录
rwx:user拥有所有权限
r-x:group拥有read与execute权限,无wirte权限
r-x:other拥有read与execute权限,无wirte权限
[口试]: (节选)
设计几个表,可以反映用户的权限。类似用户-角色-权限这样的模式
答:略
怎么查询一条sql是否启用了索引
答:explain
explain,可以看到索引级别,你知道索引级别是什么?有多少种?
答:额。。。这个不知道。
没了解过对吧?有8中级别。可以在explain中看到的。
答:是最后一个字段吗?我怎么记得好像是表示此次sql扫描的行数啊?
恩,是行数。也是级别(具体当时他怎么说的我现在有点记不住了,可能不是这么说的,反正就知道索引有个级别这玩意,在去google呗!)
答:哦,好像很厉害的样子!
分表算法中,怎么决定用哪一个整数去取余?类似若用电话号码的后四位来作文分表依据。我们准备分15张表。
答:15
分表的时候,分多少张表,有什么依据吗,我们怎么知道就要分15张表。
答:这个。。。不知道啊
换个说法,你知道Mysql中为了使一张表能很好工作时,应该将记录维持在多大数据量
答:几百万吧?
你没了解过对吧?额,在mysql中200w一张表可以良性工作。这样我们就知道该分几张表了。
答:哦,好像很厉害的样子!
说说mysql主从数据库架构
答:见我前面的面试文章,答过太多次了(做的推广,哈哈)
说说Mysql在设计上你所知道的所有优化方式
答:1:建立索引,不能太多。看where需求,能建立联合就建立联合,而后考虑建立单字段索引
2:分表或mysql5.1后的partition分区(没用过!)
3:字段类型能用char就不用varchar,能用varchar就不用text,字段长度要尽量接近需求,能为1的,不设置2,。。。
4:数据表的引擎,根据需求选择最优的
5:链接数过多,可适当增大mysql的最大链接数
6:mysql主从。做读写分离。
char和varchar的有什么区别
答:char是定长的,搜索快。Varchar不定长,在内部存储的时候,字段前几位会把长度先存下来,这样才能知道结束位置,不过这样也还是解决不了他慢的问题。这是我猜的,是不是它不定长,所以内部的算法是递推,然后就慢了?而char定长的,能实现O(1)的存取速度?
在css中,若有两个div,若想使他们有上下层叠的效果,怎么做
答:z-index
我们系统要用到css3,html5掌握怎么样。
答:还行
切过图么
答:没有,不会
摘自:http://www.lnmper.net/?p=21