【转】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

上一篇:翻译一篇文章:It's Difficult to Grow a Test Developer(成为测试开发工程师的艰辛)


下一篇:ES5和ES6那些你必须知道的事儿(三)