php 内部笔试题

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

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

3. 简述下面程序的输出结果, 简要说明为什么, 如何解决这类问题?


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

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

6. 将下面的数组用一行拼装成一个字符串i am milo! day day up!


7. 调用如下函数获取函数并获取count的值


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程序输出的内容是什么? 为什么?


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

2.php


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

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

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

27. 有如下几个脚本, 请问2.php的输出结果
1.php

2.php
';
$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攻击?

你可能感兴趣的:(php 内部笔试题)