PHP架构师面试题目和答案

PHP架构师面试题目和答案
PHP架构师面试题目和答案

一、MySQL相关知识

1、请列举mysql优化方式

选取最适用的字段属性、事务、锁定表、使用外键、使用索引、优化的查询语句

使用连接(JOIN)来代替子查询(Sub-Queries)

使用联合(UNION)来代替手动创建的临时表

2、请列举分库分表的常用方法

有一个1000多万条记录的用户表members,查询起来非常之慢

for($i=0;$i< 100; $i++ ){

//echo "CREATE TABLE db2.members{$i} LIKE db1.members
";

echo "INSERT INTO members{$i} SELECT * FROM members WHERE

mid%100={$i}
";

}

?>

3、Mysql+如何做双机热备和负载均衡

1.主服务器授权

2.数据复制

3.配置主服务器

4.重启master

5.配置slave

6.重启slave

7.查看master的状态与设置的是否一致

8.查看slave

4、数据表类型有哪些

MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等

MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。

5、防sql注入的方法?

mysql_escape_string(strip_tags($arr["$val"]));

6、mysql把一个大表拆分多个表后,如何解决跨表查询效率问题

[php]view plain copy

1./**

2.*函数名称:post_check()

3.*函数作用:对提交的编辑容进行处理

4.*参数:$post:要提交的容

5.*返回值:$post:返回过滤后的容

6.*/

7.function post_check($post){

8.if(!get_magic_quotes_gpc()){//判断magic_quotes_gpc是否为打开

9.$post=addslashes($post);//进行magic_quotes_gpc没有打开的情

况对提交数据的过滤

10.}

11.$post=str_replace("_","\_",$post);//把'_'过滤掉

12.$post=str_replace("%","\%",$post);//把'%'过滤掉

13.$post=nl2br($post);//回车转换

14.$post=htmlspecialchars($post);//html标记转换

15.return$post;

16.}

7、索引应用

7.1什么情况下考虑索引

7.2什么情况不适合索引

7.3一个语句是否用到索引如何判断

8、mysql对于大表(千万级),要怎么优化

第一优化你的sql和索引;第二加缓存,memcached,redis;

第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;

第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区,另外分区表还有一些坑,在这里就不多说了;

第五如果以上都做了,那就先做垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统;

第六才是水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理的sharding key,为了有好的查询效率,表结构也要改动,做一定的冗余,应用也要改,sql 中尽量带sharding key,将数据定位到限定的表上去查,而不是扫描全部的表;

mysql数据库一般都是按照这个步骤去演化的,成本也是由低到高;

9、如何理解mysql的慢查询

其实通过慢查询日志来分析是一种比较简单的方式,如果不想看日志,可以借助工具来完成,

如mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter等,感觉自己来分析一个需要丰富的经验,一个浪费时间。

10、关于用户登录状态存session,cookie还是数据库或者memcache的优劣

11、事务应用极端情况处理

12、sql语言分4大类请列举

DDL--CREATE,DROP,ALTER

DML--INSERT,UPDATE,DELETE

DQL-SELECT

DCL--GRANT,REVOKE,COMMIT,ROLLBACK

二、php基础

?session的跨域共享是什么,如何实现

?php连接mysql数据库的几种方式及区别

mysql:面向过程

mysqli:面向对象

pdo:可移植性高

三、php高级

?长连接和短连接的使用,区别是什么

?socket的使用,简述过程

?支付安全问题,如何保证

?面向对象的概念

?三大特性:封装、继承、多态(方法重写)。

抽象类:abstract,至少有一个方法是抽象方法,不能被实例化,为子类定义公共接口。

接口:interface,解决php的单继承问题,所有方法都是public访问权限的抽象方法,不能声明变量只能声明常量。

继承一个类的同时实现多个接口

class A extends B implements 接口1,接口2...,接口n(){

//实现所有接口中的方法

}

?lamp 和lnmp 架构性能差异的原因分析

?解释性语言和编译性语言的性能分析,请举例

四、正则表达式:请用js实现正则表达式验证

function check( email_address )

{

var regex = /^([0-9A-Za-z\-_\.]+)([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g;

if ( regex.test( email_address ) )

{

var user_name = email_address.replace( regex, "$1" );

var domain_name = email_address.replace( regex, "$2" );

var alert_string = "您输入的电子地址合法\n\n";

alert_string += "用户名:" + user_name + "\n";

alert_string += "域名:" + domain_name;

window.alert( alert_string );

return true;

}

else

{

window.alert( "您输入的电子地址不合法" );

return false;

}

}

五、开发基础:简述进程和线程定义,区别和联系

进程的状态:运行run、就绪ready、等待wait

六、Nosql数据库:简述memcached、redis、mongodb的区别联系

3个场景完全不同的东西。1.memcached:单一键值对存缓存的,做对象缓存无可替代的分布式缓存;2.redis:是算法和数据结构的集合,快速的数据结构操作是他最大的特点,支持数据持久化;3.mongodb是bson结构、介于rdb和nosql之间的,更松散更灵活的,但是不支持事务,只用作非重要数据存储。

七、常用linux命令:如何建立软

八、架构相关

?项目上线前如何进行压力测试,单台服务器支持的并发数,pv数?

?服务器资源怎么分配合理

CPU:Apache

MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然会CPU占用过高。

存:存库,数据库软件

硬盘:文件

?web2.0架构选择有?

MongoDB+Redis 或者MySQL+Memcached 比较好的组合,逻辑简单的就用NOSQL

?当前流行主要架构有?

LAMP、LNMP、LLMP

现在网络上还有一种LNAMP构架,也就是综合了nginx和Apache的优点,使用Apache 负载PHP,nginx负责解析其他Web请求,使用nginx的rewrite模块,但是Apache端口不对外开放,Apache的许多模块都可以不加载减少资源。

php程序员面试题目

php程序员面试题目 1、以下题目,除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源,请节约使用。编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了。 2、时间: 基础任务+进阶任务+设计任务=90分钟 编程任务=60分钟 基础任务: 1、请列举你能想到的UNIX信号,并说明信号用途。 2、请列举、你能想到的所有的字符串查找算法,并加注释简单说明。 3、有一个IP地址(192.168.0.1),请写出其32位无符号整数形式。 4、写出、你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面) 基础任务-选作(会得到额外分数): 1、画几个你最熟悉的SERVER端模型出来(格式不重要,尽量将图画清楚,说明思路即可) 进阶任务: 1、PHP的垃圾收集机制是怎样的? 说明: 1)如果,你熟悉PHP源码,那么请从源码入手,回答些问题,会获得额外加分 2)如果,你不熟悉PHP源码,那么尽你所能,多写点东西,包括利用自己的编程直觉得到的信息,都可以。 3)对,则有分,错误不扣,不写无分。 2、请写出HTTP头,并符合以下要求: 1)这是一个post请求 2)目标:https://www.360docs.net/doc/6d2988696.html,:8080/test 3)POST变量: username: test

pwd: test2 intro: Hello world! 4)包含以下COOKIE信息: cur_query: you&me 说明: 1)如果,你记不得某个HTTP协议中的指令字了,那么,无奈这举是用“汉字”代替。 2)如果,你能记住更多的HTTP协议指令字,那么多写几句,总是没坏处,对吧? 3)最关键的,只需要画出正确的“轮廓”(还记得httpwatch等工具打印出来的头部吗?那就是“轮廓”的含义),也会有分数,但如果,连“轮廓”都写错了,那么就很遗憾了。 设计任务: 1、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东 要求如下: 1)要求每个QQ号码(假设此QQ号码在UNIT32内可以表示)10分钟这内只能投5票。 2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。 说明: 1)无需写代码,只需要图跟文字即可。 2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。 3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。 4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分。 编程任务: 1、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧。 要求如下: 1)/myworks/example/bbe.txt,98版本英文圣经一本 2)输入部分要求如下:php ./example.php [单词] 3)输出部分如下:[单词] 1,2 2,4 5,6表示:此单词在1行2列(第二个单词),2行4列...

PHP面试题

PHP核心课程测试题一.单选题( 1’ x 50 = 50’ ) 1. PHP是哪一种类型的语言( ) A.编译型 B.解释性 C.两者都是 D.两者都不是 2. 在用浏览器查看网页时出现404错误可能的原因是( ) A.页面源代码错误 B.文件不存在 C.与数据库连接错误 D.权限不足 3. 若x,y为int类型变量,则执行以下语句后,y的值为( ) A.1 B.2 C.3 D.0 4.下列代码执行后,输出结果正确的是( ) A.1 B.2 C.运行错误 D.都不对

5. 执行完以下代码后,变量$num的值为( ) A.10 B.20 C.30 D.显示错误 6. 以下程序运行结果为( ) A.5 + 3 + 1 = 9 B.1 + 5 + 3 =9 C.提示错误,并有显示:+ 3 + 1 = 4 D.9 7. 下面的脚步运行以后,$array数组所包含的值是( ) $v){ $v = 2 } ?> A.arra y (…2?, ?2?) B.array (1, 1) C.array (2, 2) D.array (null,null) 8. 查询名字中第2个字为“阳”的学生的姓名和学号,正确的是( ) A.Select Sname,Sno from student where Sname like ‘_阳%’; B.Select Sname,Sno from student where Sname like ‘阳%’;

php面试编程题汇总

=0;$i--){ $str_end.=$str[$i]; } return $str_end; } //实现中文字符截取无乱码 function GBstr($string,$start,$lenght){ if(strlen($string)>$lenght){ $len=$start+$lenght; $str_end=''; for($i=0;$i<$len;$i++){ if(ord(substr($string,$i,1))>0xa0){ $str_end.=substr($string,$i,2); $i++; } else{ $str_end.=substr($string,$i,1); } } return $str_end; } else{ return $string; } } //打印客户端和服务端ip地址 /* IP:echo $_SERVER['REMOTE_ADDR']; 或者: getenv('REMOTE_ADDR');

打印服务器IP:echo gethostbyname("https://www.360docs.net/doc/6d2988696.html,") */ //准确获得服务端ip地址 function getip(){ if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){ $ip = getenv('HTTP_CLIENT_IP'); }else if (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){ $ip = getenv('HTTP_X_FORWARDED_FOR'); }else if (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){ $ip = getenv('REMOTE_ADDR'); }else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){ $ip = $_SERVER['REMOTE_ADDR']; } preg_match("/[\d\.]{7,15}/", $ip, $temp); $ip = $temp[0] ? $temp[0] : 'unknown'; unset($temp); return $ip; } //修改session生存时间 setcookie(session_name(),session_id(),$lifetime); session_set_cookie_params($lifetime); //获取网址首页的全部内容如https://www.360docs.net/doc/6d2988696.html, function GetConect($address){ $judge=preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"]) *$/",$address)?true:false; if($judge){ $readcontents=fopen($address, "rb"); $contents = stream_get_contents($readcontents); fclose($readcontents); return $contents; } return file_get_contents($address); } //php中的heredoc特殊字符串 /* heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串例子: $STR=<<

2021年php面试题和答案

1、用PHP打印出前一天时间格式是-5-10 22:21:21(2分) $a = date("Y-m-d H:i:s",strtotime("-1 day")); print_r($a); 2、echo(),print(),print_r()区别(3分) echo 和print不是一种函数,是一种语言构造 int print(string $arg),只有一种参数 echo arg1,arg2;可以输出各种参数,返回void echo和print只能打印出string,不能打印出构造 print_r能打印出构造 例如 $arr = array("key"=>"value"); print_r($arr); 3、可以使HTML和PHP分离开使用模板(1分) smarty,phplib 4、使用哪些工具进行版本控制?(1分) svn,git,cvs 5、如何实现字符串翻转?(3分) 英文: strrev($a)

中文或其她文字: 中文:GB2312,代码是使用GB2312编码

PHP面试题目

“中欧商业在线”PHP笔试 一、编程题 1、如何实现字符串翻转?(PHP) 答:可以用下面这个自定义函数 function getStr($str){ //输入字符串 $len=strlen($str); //计算字符串长度 for ($i=0;$i<$len/2;$i++){ $temp=$str[$i]; $str[$i]=$str[$len-$i-1]; $str[$len-$i-1]=$temp; } return $str; //返回翻转结果 } 2、解释这则用JS写得正则表达式。 /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ 答:匹配以数字字母开头不能出现-+.,必需有一个@,再以数字字母开始,不能有-+.,只能有一个点,以字母结尾 3、用PHP写一个程序连接MYSQL数据库,并查出 4、DIV+CSS布局 https://www.360docs.net/doc/6d2988696.html,首页 由于时间关系!布局没有做完。 5、用任何语言写一个排序函数 答:function getrange($a,$b) //假如传进来的是数字或字母 { //按数字升序排序 $num1=array($a,,$b); sort($num1,SORT_NUMERIC); foreach ($num1 as $mychrs1) { echo $mychrs1." ";

腾讯PHP工程师笔试题

1.请对POSIX风格和兼容Perl风格两种正则表达式的主要函数进行类比说明ereg preg_match ereg_replace preg_replace 2.请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响3.PHP5中魔术方法函数有哪几个,请举例说明各自的用法 __sleep __wakeup __toString __set_state __construct, __destruct __call, __get, __set, __isset, __unset __clone __autoload

4.请写出让,并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?5.PHP的垃圾收集机制是怎样的 6.使对象可以像数组一样进行foreach循环,要求属性必须是私有。 (Iterator模式的PHP5实现,写一类实现Iterator接口) 7.请写一段PHP代码,确保多个进程同时写入同一个文件成功 8.用PHP实现一个双向队列 9.使用正则表达式提取一段标识语言(html或xml)代码段中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有空格等)。此处假设需提取test标签的attr属性值,请自行构建包含该标签的串

10.请使用socket相关函数(非curl)实现如下功能:构造一个post请求,发送到指定http server 的指定端口的指定请求路径(如https://www.360docs.net/doc/6d2988696.html,:8080/test)。请求中包含以下变量: 用户名(username):温柔一刀 密码(pwd):&123=321&321=123& 个人简介(intro):Hello world! 且该http server需要以下cookie来进行简单的用户动作跟踪: cur_query:you&me last_tm:...(上次请求的unix时间戳,定为当前请求时间前10分钟) cur_tm:...(当前请求的unix时间戳) 设置超时为10秒,发出请求后,将http server的响应内容输出。 1.Function encode($data, $sep = ‘&’){ 2.while (list($k,$v) = each($data)) { 3.$encoded .= ($encoded ? "$sep" : ""); 4.$encoded .= rawurlencode($k)."=".rawurlencode($v); 5.} 6.Return $encoded; 7.} 8. 9.Function post($url, $post, $cookie){

Php面试宝典100题汇总

P h p面试宝典100题汇总-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

Php面试100题汇总 1,Http 和Https的区别 第一:http是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议 第二:http和https使用的是完全不同的连接方式,端口也不一样,前者80 或者443第三:http连接很简单,是无状态的。https协议是由ssl+http协议构建的可进行加密传输,身份认证的网络协议。 2.什么方法来加快页面的加载速度 1,用到服务器资源时在打开,不用时,立即关闭服务器资源。 2,数据库添加索引 3,页面可生成静态 4,图片等大文件单独放在一个服务器 5,能不查询数据库的尽量不去数据取数据,可以放在缓存中。 3.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. ,print,print_r 的区别: echo 是php语句,无返回值。 print,print_r是函数,有返回值。 print()只能打印出简单类型变量的值(如int,string) print_r()可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串 与cookie区别 session与cookie相同:跨页面、不跨用户 session与cookie不相同: 1、session可以存储任意类型的数据,但cookie只能存储字符串 2、cookie产生在服务器端、存储在客户端 session产生在服务器端、存储在服务器端 6.魔术常量 答案: __LINE__文件中的当前行号。 __FILE__文件的完整路径和文件名。 __FUNCTION__函数名称 __CLASS__类的名称 __METHOD__类的方法名 7.数据库中的事务是什么? 答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事

php面试题及答案

php面试题及答案,经典php笔试题与答案 问题 1.考虑如下脚本。标记处应该添加什么代码才能让脚本输出字符串 php? $alpha = 'abcdefghijklmnopqrstuvwxyz'; $letters = array(15, 7, 15); foreach($letters as $val) {/* 这里应该加入什么 */ } ?> A.echo chr($val); B.echo asc($val); C.echo substr($alpha, $val, 2); D.echo $alpha{$val}; E.echo $alpha{$val+1} 2.以下哪一项不能把字符串$s1 和$s2 组成一个字符串? A.$s1 + $s2 B.”{$s1}{$s2}” C.$s1.$s2 D.implode(”, array($s1,$s2)) E.以上都可以 3.变量 $email 的值是字符串 user@https://www.360docs.net/doc/6d2988696.html, ,以下哪项能把字符串转化成 https://www.360docs.net/doc/6d2988696.html,? A.substr($email, strpos($email, “@”));

B.strstr($email, “@”); C.strchr($email, “@”); D.substr($email, strpos($email, “@”)+1); E.strrpos($email, “@”); 4.给定一个用逗号分隔一组值的字符串,以下哪个函数能在仅调用一次的情况下就把每 个独立的值放入一个新创建的数组? A.strstr() B.不可能只调用一次就完成 C.extract() D.explode() E.strtok() 5.要比较两个字符串,以下那种方法最万能? A.用 strpos 函数 B.用==操作符 C.用 strcasecmp() D.用 strcmp() 6.以下哪个 PCRE 正则表达式能匹配字符串 php|architect? A..* B.…|……… C.\d{3}\|\d{8} D.[az]{3}\|[az]{9} E.[a-z][a-z][a-z]\|\w{9} 7.以下哪些函数能用来验证字符串的完整性?(三选)

php程序员面试题(b卷_附答案)

1.以下哪一句不会把John 新增到users 阵列? $users[] = 'john'; 成功把John 新增到阵列users。 array_add($users,’john’); 函式array_add() 无定义。 array_push($users,‘john’); 成功把John 新增到阵列users。 $users ||= 'john'; 语法错误。 2.sort()、assort()、和ksort() 有什么分别?它们分别在什么情况下使用? sort() 根据阵列中元素的值,以英文字母顺序排序,索引键会由0 到n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。 assort() PHP 没有assort() 函式,所以可能是asort() 的笔误。 asort() 与sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。 ksort() 根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。 3.以下的代码会产生什么?为什么? $num =10; function multiply(){ $num =$num *10; } multiply(); echo$num; 由于函式multiply() 没有指定$num 为全域变量(例如global $num 或者$_GLOBALS['num']),所以$num 的值是10。 4. reference 跟一个正规的变量有什么分别?如何pass by reference?在什么情况下我们需要这样做? Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。 一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。 $myVariable = "its' value"; Myfunction(&$myVariable); // 以reference 传送参数以reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。 5.些函式可以用来在现正执行的脚本中插入函式库? 对这道题目不同的理解会有不同的答案,我的第一个想法是插入PHP 函式库不外乎include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括com 物件和.net 函式库,所以我们的答案也要分别包括com_load 和dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。

PHP中级面试题

姓名:__________ 面试时间:___________ 1、使用过哪些版本控制器 2、使用过哪些框架 3、从上家公司离职的原因 一、基础技能题 1、实现中文字串截取无乱码的方法 2、php5的构造函数和析构函数及具体作用。 3、HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。 4、Include require include_once require_once 的区别 5、请写出0/false/null之间的关系 二、计算题

6、 $count = 5; function get_count() { static $count = 0; return $count++; } ++$count; echo get_count(); echo get_count(); 7、 echo count(null); echo count(false); 8、 $a = 3; $b = 5; if($a = 5 || $b = 7) { $a++; $b++; } echo $a . " " . $b; 9、 function get_arr($arr){ unset($arr[0]); } $arr1 = array(1, 2); $arr2 = array(1, 2); get_arr(&$arr1); get_arr($arr2); echo count($arr1); echo count($arr2); 三、程序编写题

1、使用PHP描述冒泡排序算法,对象可以是一个数组 2、使用PHP描述快速排序算法,对象可以是一个数组 3、如何实现字符串翻转(注* 不可使用内置字符串翻转函数) 四、扩展题 1、请谈谈你对php动态抓取的认识。 2、你做过最得意的项目是什么做这个项目中都遇见了哪些问题后来是怎么解决的 …

2010 腾讯php程序员面试题目

2010 腾讯php程序员面试题目 说在前面: 1、以下题目,除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源,请节约使用。编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了。 2、时间: 基础任务+进阶任务+设计任务=90分钟 编程任务=60分钟 基础任务: 1、请列举你能想到的UNIX信号,并说明信号用途。 2、请列举、你能想到的所有的字符串查找算法,并加注释简单说明。 3、有一个IP地址(192.168.0.1),请写出其32位无符号整数形式。 4、写出、你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面) 基础任务-选作(会得到额外分数): 1、画几个你最熟悉的SERVER端模型出来(格式不重要,尽量将图画清楚,说明思路即可) 进阶任务: 1、PHP的垃圾收集机制是怎样的? 说明: 1)如果,你熟悉PHP源码,那么请从源码入手,回答些问题,会获得额外加分 2)如果,你不熟悉PHP源码,那么尽你所能,多写点东西,包括利用自己的编程直觉得到的信息,都可以。 3)对,则有分,错误不扣,不写无分。 2、请写出HTTP头,并符合以下要求: 1)这是一个post请求 2)目标:https://www.360docs.net/doc/6d2988696.html,:8080/test 3)POST变量: username: test pwd: test2 intro: Hello world! 4)包含以下COOKIE信息: cur_query: you&me 说明: 1)如果,你记不得某个HTTP协议中的指令字了,那么,无奈这举是用“汉字”代替。 2)如果,你能记住更多的HTTP协议指令字,那么多写几句,总是没坏处,对吧? 3)最关键的,只需要画出正确的“轮廓”(还记得httpwatch等工具打印出来的头部吗?那就是“轮廓”的含义),也会有分数,但如果,连“轮廓”都写错了,那么就很遗憾了。

php面试题及答案,经典php笔试题与答案

问题 1.选择合适的答案填入空白处 PHP 是一种______脚本语言,基于______引擎。PHP 最常被用来开发动态的 ______内 容,此外,它同样还可被用来生成______(以及其他)文档。 A.动态,PHP,数据库,HTML B.嵌入式,Zend,HTML,XML C.基于 Perl 的,PHP,Web,静态 D.嵌入式,Zend,Docbook 文档,MySQL E.基于 Zend 的,PHP,图像,HTML 1.唯一有意义的答案是 B。PHP 是一种基于 Zend 引擎的脚本语言,它通常被嵌入在 HTML 代码中。它主要被用来开发 HTML 文档,但是也可以用它来开发其他类型的文档,比 如 XML。 2.以下哪种标签不是 PHP 起始/结束符? A.<% %> B.// C. D./* */ E.

2. PHP 编程中,人们不太使用<% %>和两个标签,但它们确实是合法的 PHP 界定符。 标签是非法的,因此正确的答案是 D。记住,根据 php.ini 文件中的配置不同,这 当中的某些标签无法在特定的情况下使用。 3.以下代码哪个不符合 PHP 语法? A.$_10 B.${“MyVar”} C.&$something D.$10_somethings E.$aVaR 3. PHP 变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线。${“MyVar”} 是一个合法的变量名,它使用的是较松散的命名约定。&$something 是对$something 的 引用。然而,变量名不能以数字为开头,$10_somethings 是非法的,因此答案是 D。 4.运行以下代码将显示什么? define(myvalue, "10"); $myarray[10] = "Dog"; $myarray[] = "Human"; $myarray['myvalue'] = "Cat"; $myarray["Dog"] = "Cat";

腾讯php面试答案

设计任务: 1、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东 要求如下: 1)要求每个QQ号码(假设此QQ号码在UNIT32 内可以表示)10分钟这内只能投5票。2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。 说明: 1)无需写代码,只需要图跟文字即可。 2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。 3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。 4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分. 解答: 核心问题:如何统计10分钟之内投了5票? 首先:以秒为键切分数据集,10*60=600个时间戳桶,并添加一个Forbid令牌桶 然后:每个数据集内,以qq号码为键,vote次数为值 OK,已经成功转换为key-value方式存储,2000万的日投票,除以86400秒,并发231.48rps,使用memcache能够轻松胜任。 数据集ID:201006072134 【QQ号码:Vote次数】 201006072134 | 201006072135 | 201006072136 【12345:3】| 【12345:3】| 【12345:3】

【88888:2】| 【88888:3】| 【88888:3】 把下一秒钟不能投票的同学生成一个令牌桶Forbid。―――――- Forbid令牌桶 【12345】 【55555】 【66666】 【77777】 【99999】 ―――――- if(in_array($uid,$not_vote)) { $flag = ‘不能投票’; } else { $flag = ‘可以投票’; //insert 新时间戳桶 } 定时任务 1、unset(10分钟前的时间戳桶)

最全最详细的PHP面试题(带有答案)

1 php面试题及答案(原创)收藏 基础题: 1.表单中get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. 2.session与cookie的区别? 答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。 两者都可通过时间来设置时间长短 3.数据库中的事务是什么? 答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成, 事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。 简述题: 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)**************** 答:echo date('Y-m-d H:i:s', strtotime('-1 days')); 2、echo(),print(),print_r()的区别(3分) 答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print()只能打印出简单类型变量的值(如int,string) print_r()可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串 3、能够使HTML和PHP分离开使用的模板(1分) 答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate 5、使用哪些工具进行版本控制?(1分) 答:cvs,svn,vss; 6、如何实现字符串翻转?(3分) 答:echo strrev($a); 7、优化MYSQL数据库的方法。(4分,多写多得) 答: 1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM 2、使用连接(JOIN)来代替子查询: 3、使用联合(UNION)来代替手动创建的临时表 4、事务处理:

PHP 面试笔试题--选择题部分

1.以下哪种类型是B/S构架的正确描述?(C) A. 需要安装客户端的软件 B. 不需要安装就可以使用的软件 C. 依托浏览器的网络系统 D. 依托outlook等软件的邮件系统? 2.PHP中,单引号和双引号所包围的字符串有什么区别?(AD)(选择两项) A. 单引号速度快,双引号速度慢 B. 双引号速度快,单引号速度慢 C. 两者没有速度差别 D. 双引号解析其中以$开头的变量,而单引号不解析 3.下面哪个不是合法的SQL的归类函数?(E) A. AVG B. SUM C. MIN D. MAX E. CURRENT_DATE() 4.若y , x为int型变量,则执行以下语句后,y的值为(B) x=1; ++x; y = x++; A、1 B、2 C、3 D、0 5.以下代码执行结果为:(A) A 30 B 24linux6 C 6 D 30linux 6.PHP是一种什么型的语言:(C) A、编译型 B、解释型 C、两者都是 D、两者都不是 7.下列描述正确的是(B) A、JavaScript是一种编译型语言 B、JavaScript是一种基于对象和事件驱动的编程语言 C、JavaScript中变量声明采用强定义类型 D、JavaScript采用静态联编 8.要想在网页中输出”<”正确的方法是(B) A: & B: < C: > D: ” 9.创建一个滚动菜单的HTML代码是?(D) A.

B. C.