封装 继续 多态封装:工具以外的部分不能随意存取工具内部数据继续:通过子类继续父类进行功能扩展多态:对具有继续关系的不同类工具,可以对相同名称的成员函数调用,产生不同的反应效果

二、用PHP程序写出5种以上办法获取一个文件的扩展名?//第1种方法substr(strrchr($file, ‘.’), 1);

//第2种方法substr($file, strrpos($file, ‘.’)+1);

狼羊菜过河php法式员面试必备PHP基本面试题 – 第十四天 CSS

//第3种方法end(explode(‘.’, $file));

//第4种方法$info = pathinfo($file);echo $info[‘extension’];

//第5种方法pathinfo($file, PATHINFO_EXTENSION);

三、写出以下PHP程序的实行结果

<?

$count=5;

function get_count(){

static $count=0;

return ++$count;

}

echo $count;

echo $count++;

echo $count;

echo get_count();

echo get_count();

?>

输出为:5 5 6 1 2

四、写出下列代码的输出结果:

function myfunc($argument){

echo $argunment + 10;

}

$variable = 10;

echo “myfunc($variable)=”.myfunc($variable);

先调用函数输出,后输出字符串输出为: 20myfunc(10)=

五、请用尽可能少的语句实现对输出Email地址进行验证的功能

'/[0-9a-zA-Z_]+@[0-9a-zA-Z_]\.com|\.net|\.cn/ism'

六、php是否有安全问题,如果有,请列举解释。

1.过滤用户输入的值 比如从post和get传参得来的值例:$_POST[‘user’];不过滤,会造成持续串的麻烦

2.禁用register_globals 如果不禁止,就无法确定该变量是否是预定义全局变量里的值例:regiseter_globals=on $var 会代替掉 $_POST[‘var’]

3.防止sql注入利用 mysql_real_escape_string() 作为用户输入的包装器,就可以避免用户输入中的任何恶意 SQL 注入

例: $sql = "select count() as ctr from users where username='".mysql_real_

_string($username)."' and password='". mysql_real_escape_string($pw)."'

limit 1";

七、如何判断SQL语句的运行效率?如何优化一个查询SQL?利用explain查看sql语句最紧张的查看type和Extra的值

1. 避免全表扫描2. 以下操作不当也会造玉成表扫描3. 避免在where子句中利用!=或<>操作符, 还有null值的判断全表扫描3. 避免在where子句中利用or in not in4. 避免在where子句中对字段利用函数操作5. 不要写一些没故意义的查询6. 索引只管即便不要过多

八、一群猴子排成一圈,按1,2,…,n依次编号,然后从第一个开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,再把它踢出去,……。
如此一直地进行下去,直到末了只剩下一只猴子为止,那只猴子就叫做大王。
哀求编程仿照此过程,输入m,n,?输出末了那个大王的编号。

//注释不要抄,帮助理解

function king($m ,$n)

{

//布局数组

for($i=1 ;$i<$m+1 ;$i++){

$arr[] = $i ;

}

$i = 0 ; //设置数组指针

while(count($arr)>1)

{

//遍历数组,判断当前猴子是否为出局序号,如果是则出局,否则放到数组末了

if(($i+1)%$n ==0) {

unset($arr[$i]) ;

} else {

array_push($arr ,$arr[$i]) ; //本轮非出局猴子放数组尾部

unset($arr[$i]) ; //删除

}

$i++ ;

}

return $arr ;

}

var_dump(king(6,4));

或者

public static function play($first,$m,$k)

{

//先要找到是后一个节点

$tail=$first;

while ($tail->next!=$first)

$tail=$tail->next;

//从第几个人开始数就要将这个人设为头节点,也要找到它的后一个结点,作作赞助结点。

for($i=0;$i<$k-1;$i++)

{

$first=$first->next;

$tail=$tail->next;

}

while($tail!=$first)

{

//找到要移出的结点。

for($j=0;$j<$m-1;$j++)

{

$first=$first->next;

$tail=$tail->next;

}

//删除节点

echo '小孩'.$first->no.'被移除'.'<br>';

$first=$first->next;

$tail->next=$first;

}

echo '大王是:'.$first->no;

}

}

附加题

1、一们猎人带着一只儿狼,一只羊和一捆白菜过河,但他一次只能带三者中的一者过河。
问:他若何过河才能不至于让儿狼吃掉羊或让羊吃掉白菜

先带羊 后带白菜 再带狼

2、用小圆炉烤两个饼,每个饼正反面都要烤,而每烤一壁所须要的韶光是半分钟,若何在一分半钟烤好三个饼?

a饼 b饼 烤 半分钟 把b拿掉 换上c饼 a饼反面 烤 半分钟 再把a饼拿掉 换上b饼反面 c饼反面 烤半分钟

3、一只田鸡掉进一口18英尺深的井,每天白天它向上爬6英尺,晚上向下滑3英尺。
按照这个速率多少天可以爬出井口?

5天 第五天白天爬出井口