php面试题(一)

1. 用PHP写出显示客户端IP与服务器IP的代码

1
2
3
4
5
6
7
8
$_SERVER['REMOTE_ADDR']客户端IP
function getOnlineIP(){
        if (getenv('HTTP_CLIENT_IP')) return getenv('HTTP_CLIENT_IP');
        if (getenv('HTTP_X_FORWARDED_FOR')) return getenv('HTTP_X_FORWARDED_FOR');
        if ($_SERVER["REMOTE_ADDR"]) return $_SERVER["REMOTE_ADDR"];
        if (!empty($HTTP_SERVER_VARS['REMOTE_ADDR'])) return $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
服务器IP:gethostbyname(“www.baidu.com”)

2. 打开php.ini中的Safe_mode,会影响哪些函数?至少说出6个。
答:1:用户输入输出函数(fopen() file() require(),只能用于调用这些函数有相同脚本的拥有者)
2:创建新文件(限制用户只在该用户拥有目录下创建文件)
3:用户调用popen() systen() exec()等脚本,只有脚本处在safe_mode_exec_dir配置指令指定的目录中才可能
4:加强HTTP认证,认证脚本拥有者的UID的划入认证领域范围内,此外启用安全模式下,不会设置PHP_AUTH
5:mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同
6:受影响的函数变量以及配置命令达到40个

3. 请写一个函数验证电子邮件的格式是否正确(要求使用正则)
答:preg_match(‘/^[\w\-\.]+@[\w\-]+(\.\w+)+$/’, $email);

4. MySQL数据库,一天一万条以上的增量,怎么优化?
答:处理的方法之一是按月进行分表,因为是日志表,主要操作是insert操作,所以每月初自动生成新的数据表,数据插入到对应月份的那张数据表。[比如表明前缀是cdb_smslog 后面加200910 及时cdb_smslog_200910],其他优化方式暂时想不起来,对于myISAM, 考虑容量的话,也有优化的方案

5.写出一种排序算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//冒泡排序
function maopao($arr) {
        $count = count($arr);
        for($i=0; $i<$count-1; ++$i) {
                for($j=0; $j<$count-$i-1; ++$j) {
                        if($arr[$j] > $arr[$j+1]) {
                                $temp = $arr[$j];
                                $arr[$j] = $arr[$j+1];
                                $arr[$j+1] = $temp;
                        }
                }
        }
        return $arr;
}

6.写个函数用来对二维数组排序
答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function array_sort_by_any_row($array_name, $row_id, $order_type){
    $array_temp=array();
    foreach($array_name as $key=>$value){
        $array_temp[$key]=$value[$row_id];
    }
    if($order_type==="ASC"){ //顺序
        asort($array_temp);
    } else {
        arsort($array_temp);
    }
    $result_array=array();
    foreach($array_temp as $key=>$value){
        $result_array[$key]=$array_name[$key];
    }
    return $result_array;
}
$arr = array(
    array('num'=>5, 'value'=>6),
    array('num'=>2, 'value'=>39),
    array('num'=>36, 'value'=>29)
);
$sortarr = array_sort_by_any_row($arr, 'num', 'DESC');
print_r($sortarr);

7.写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        $path = str_replace('\', '/',__FILE__);
    echo $path.'
<br />';
    function extname1($path) {
        return strrchr($path, '
.');
    }
   
    function extname2($path) {
        $position = strrpos($path, '
.');
        return substr($path, $position);
    }
   
    function extname3($path) {
        $arr = explode('
.', $path);
        return $arr[count($arr) - 1];
    }
   
    function extname4($path) {
        preg_match_all('
/[\w\/\:\-]+\.([\w]+)$/', $path, $out);
        return $out[1][0];
    }
   
    function extname5($path) {
        return preg_replace('
/^[^\.]+\.([\w]+)$/', '${1}', basename($path));
    }
   
    print_r(extname5($path));

8.约瑟夫环问题

本文为 今天也想见到你 博客文章,转载无需和我联系,但请注明来自 今天也想见到你 博客 0925.wang
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇