php 内部笔试题

第一部分
1. nginx使用哪种网络协议?

2. <? echo 'hello tusheng' ; ?> 没有输出结果, 可能是什么原因, 简述的解决此问题的过程(提示: 语法没有问题)

3. 简述下面程序的输出结果, 简要说明为什么, 如何解决这类问题?
<?php
$tmp =  0 == "a"? 1: 2; 
echo $tmp;
?>

4. 已知一个字符串如下: $str = "1109063 milo 1"; 
用一行代码将该字符串里面的1109063赋值给$uid, milo赋值给$user, 1赋值给$type

5. 分别列出如下类型的有符号和无符号范围 TINYINT  SMALLINT  MEDIUMINT  INT

6. 将下面的数组用一行拼装成一个字符串i am milo! day day up!
<?php
$arr = array(
	'I', 'AM', 'MILO!', 'DAY', 'DAY', 'UP!'
);
?>

7. 调用如下函数获取函数并获取count的值
<?php
function get_list($cnd = array(), &$count = false)
{
	// 伪代码 处理$cnd 并赋值datas
	$datas = 'i am call back';
	$count && $count = rand(1, 10000);
	return $datas;
}
?>

8. 几种方式去取代session机制, 简单描述各自的优劣

9. 下列HTTP状态码出现的可能原因, 如何处理
200,  301,  404,  502, 503

10. 有如下数据库, 用原生态mysql扩展去连接并查询user表的前十行
host: 192.168.0.254
port: 3306
user: one
pass: piece
database: db_user
table: user

11. 用autoload($class) 实现Lib目录下的类的自动加载并可以兼容子目录

12. 用set_error_handle 去捕获错误并输出, 级别自己定
set_error_handle(callback,level)
function callback(int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] ){
}

13. 简述两种屏蔽php程序的notice警告的方法

14. instanceof的作用, 经常在什么设计模式中使用

15. 1023用二进制表示, 并简述计算过程

16. 下面php程序输出的内容是什么? 为什么?
<?php
$str = "aa\tbb\tcc";
@list($a, $b, $c) = explode('\t', $str);
echo $a,$b,$c;
?>

17. include和require 分别返回什么错误级别

18. 现有一个函数, 有不确定多少个的参数(可能有5个也可能有50个), 如何去定义这个函数
方法一: 不借助php内置函数
方法二: 提示func_num_args() func_get_arg() unc_get_args() 

19. 在一个函数(该函数没有return语句)里面去处理全局变量, 并且改变他的值, 用两种方法去实现(global和引用&)

20. 应用中我们经常会遇到在user表随机调取10条数据来展示的情况, 简述你如何实现该功能, 不能使用sql函数以及order by等语句
表 user 字段uid, username

21. 假设下面的sql语句里面的uid都能获取到具体值, 经过下面语句查询后uid的顺序是什么, 如何去按照uid in 输入的顺序去排序
select uid from user where uid in(10, 1, 3, 8, 11, 4, 7);

22. 用PHP将一个字符串中的字母替换成**

23. 下面2.php中打印结果是什么? 为什么? 执行顺序1.php->2.php
1.php
<?php
setcookie('test', 'cookie_test', 3600);
?>
2.php
<?php
$cookie = isset($_COOKIE['test'])? $_COOKIE['test']: 'cookie';
echo $cookie;
?>

24. 简述php常用的json编码函数, 如何将json解码的时候返回数组

25. mysql 在sql语句中有' / 等词的时候, 要对sql语句的每个具体值做些什么处理

26. 如何在php中设置header头信息

27. 有如下几个脚本, 请问2.php的输出结果
1.php
<?php
return  "i am here";
?>
2.php
<?php
$r = include_once "1.php";
echo $r.'<br/>';
$r2 = include_once "1.php";
echo $r2;
?>

28. 简述call_user_func的功能

29. 访假设nginx已经配置server_name www.120.net xxx.120.net
访问问http://www.120.net/index.php和http://xxx.120.net/index.php之后 
$_SERVER["SERVER_NAME"] 和 $_SERVER["REQUEST_URI"]分别是什么

30. linux下某文件的属性为 drwxr-xr-x 用数字表示其权限是

31. 宽带的1Mbps理论上的下载速度是多少KBps, 计算的方法

第二部分
1. 简单实现一个单例+工厂的设计模式

2. 例举几个常用的魔术方法, 并说明作用? 如何在打印一个对象的时候展示我们自定义的内容?

3. 类静态方法和实例化类方法比较及优缺点

4. 有一个论坛
threads表记录主题以及标题等信息
posts表记录主题内容以及回复内容等信息
threads 表主键为 tid
posts 表主键为 pid, 所属主题标记为tid
通过tid将threads和posts 一对多关联起来
现在数据量posts表达到了1亿, threads表2000万, 大约一个主题有5篇回复
请你设计一下分表, 将posts表和threads表进行mysql分表

5. 现在有一个mysql 主库/丛库, 请问php mysql查询的时候怎么在php程序中实现主从分离? 主从分离有什么好处

6. 简述UCenter的单点登录机制

7. linux相关 有一个包 http://www.120.net/test-1.0.0.tar.gz
a. 将它下载到/usr/local/src
b. 将其源码编译安装到/usr/local/test 目录
c. 他依赖mysql包, 位于/usr/local/mysql 目录
写出下载编译安装过程

8. 使用php 的memcache扩展编写一个获取数据的函数(缓存即将过期超时加锁)
a. 数据超时之后去mysql获取, 获取完后更新memcache
b. 去mysql获取数据的时候加锁, 让一个进程去mysql拉数据, 其他人返回memcache中的数据

9. 简述队列, 堆栈的原理

10. arrayaccess 定义如下 用它实现一个数组
ArrayAccess {
/* Methods */
abstract public boolean offsetExists ( string $offset )
abstract public mixed offsetGet ( string $offset )
abstract public void offsetSet ( string $offset , string $value )
abstract public void offsetUnset ( string $offset )
}

11. 假设coreseek安装目录为/usr/local/coreseek
配置文件为/usr/local/coreseek/etc/test.conf
索引名为 post
a. 创建索引
b. 启动服务
c. 重建索引(重建过程中保证搜索服务仍然可用)

12. 假设您有一张posts帖子表 对该表进行sphinx增量准实时索引, 描述你的方案

13.  php代码:
$i = 97;
$a = ($i++) + (++$i) + $i ;
$b = (--$i) + ($i--) + $i + 6;
echo "$i, $a, $b";
输出结果是什么?


14.  以下代码,用于取得客户端IP:	
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $onlineip = $_SERVER['REMOTE_ADDR'];
}
但是以HTTP_开始的请求header均属于客户端可以伪造的信息,在反向代理环境下,如何保证PHP不会接收到伪造的HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR值?


15. 例如google,baidu等大型网站,当使用不同客户端(如手机和PC机)访问同样的URL时,呈现的页面却不相同,这是何原理? 如果能给出实际解决方案,可加分。

16. 生产环境php.ini中magic_quotes_gpc及magic_quotes_runtime值应该设置为什么?

17. PHP调用远程http接口时可使用file_get_contents, 但当远程主机不可达或响应过慢,会导致本地PHP进程被长时间挂起,从而影响本地服务器稳定性,如何避免超时时,PHP进程长时间被挂起?

18. 同上题,如何避免DNS查询过慢导致超时?

19. mysql字符集set names * 命令设置哪几个系统变量的值?()
	A、Character_set_client		    B、Character_set_system
	C、Character_set_results	    D、Character_set_server
	E、Character_set_connection   F、Character_set_database

20. 以下哪种校对规则不区分大小写?()
	A、utf8_general_ci		B、utf8_general_cs	  C、utf8_general_bin

21. 如何杜绝XSS攻击?

23. 如何杜绝CSRF攻击?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值