1. 急求6道php笔试题答案
2:我觉得第二题比较有意思,如果不缓存,用递归100就已经够大了
<?php
$cache_ary = array(0=>1 , 1=>1);
$num = 1200;
function fib_cache($i){
global $cache_ary;
if($i == 1 || $i == 0 ){
return $cache_ary[$i];
}else if(isset($cache_ary[$i])){
return $cache_ary[$i];
}else{
$cache_ary[$i] = fib_cache($i - 1) + fib_cache($i - 2);
return $cache_ary[$i];
}
}
function fib_2($i){
if($i == 0 || $i == 1){
return 1;
}else{
return fib_2($i - 1) + fib_2($i - 2);
}
}
?>
2. php面试题解答
1,
var x=document.getElementById("img1");
var title=document.getElementById("img1").title;
var sina_title=document.getElementById("img1").sina_title;
2,serialize(),unserialize();
3,编码方式不同,urlencode()将字串以URL编码。例如空格就会变成加号。
rawurlencode()将url编码成url的字符串专用格式,特殊字符回转换成百分号后面加两个十六子介数字的格式。
4,strip_tags(),html_entity_decode();
5,$str=preg_replace("/\<script.*\>.*\<\/script\>/i","",$str);
6,左连接,左连接的表如果没有匹配的数据不影响结果。
7
SELECT name,score FROM tl_user LEFT JOIN tl_score ON tl_user.ID=tl_score.ID
7 system(),exec(),passthru()
8,json_decode ,json_encode
9 isset() empty()
10 后者的权限大于前者,后者是OFF的话,前者就算是E-ALL也没用。
11,$_SERVER['REMOTE_ADDR'];
12,incov()
echo iconv("gbk",""UTF-8,"我们");
mb_convert_encoding($str, "GBK", "UTF-8")
13 explode() split() ;implode() join()
14 注意事项挺多的,懒得写。
二
1,超时,服务器已经关闭连接
2 静态表字段长度固定,自动填充,读写速度很快,便于缓存和修复,但比较占硬盘,动态表是字段长度不固定,节省硬盘,但更复杂,容易产生碎片,速度慢,出问题后不容易重建。
3InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
MyIASM是IASM表的新版本,有如下扩展:
二进制层次的可移植性。
NULL列索引。
对变长行比ISAM表有更少的碎片。
支持大文件。
更好的索引压缩。
更好的键吗统计分布。
更好和更快的auto_increment处理。
1.MySQL最大的优势在于MyISAM引擎下的简单SELECT,INSERT和UPDATE快速操作
2.MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。
以下是一些细节和具体实现的差别:
1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
以暂对存储引擎的认识,觉得 InnoDB 支持外键,在数据量可以用“庞大”来形容时,在有良好的 INDEX 的基础上,InnoDB 的查询速度应该比 MyISAM 要快。
在 Falcon 有稳定版本前,我想 MyISAM 是一个可用的选择方案。
任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势
3, 都是1 ^^懒得回答了,睡觉去。
3. 一道PHP题,请问谁能给解释一下
<?
function pathconvert($cur,$absp)//当前文件,目标路径
{
$cur=str_replace('\\','/',$cur);
$absp=str_replace('\\','/',$absp);
$sabsp=explode('/',$absp);
$scur=explode('/',$cur);
$la=count($sabsp)-1;
$lc=count($scur)-1;
$l=max($la,$lb);
for($i=0;$i<=$l;$i++){
if($sabsp[$i]!=$scur[$i])
break;
}
$k=$i-1;
$path="";
for($i=1;$i<=($lc-$k-1);$i++)
$path.="../";
for($i=$k+1;$i<=($la-1);$i++)
$path.=$sabsp[$i]."/";
$path.=$sabsp[$la];
return$path;
}
$path=pathconvert("/home/web/test/a.php","/home/data/d.png");
echo $path;
?>
4. 程序员面试必备PHP基础面试题 – 第十三天
一、在HTTP1.0中,状态吗500的含义的是什么?如果返回“找不到文件”的提示,则可用header(函数),其语句为?
500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求
Header(“ HTTP/1.0 404 NOT FOUND”);
二、数组函数arsort()的作用是什么?语句err_reporting(2047)的作用是什么?
arsort:对数组进行逆向排序并保持索引关系;
error_reporting(2047)的作用是:report All errors and warnings
三、语句include和require都能把另外一个文件包含到当前文件中,它们的区别是___;为避免多此包含同一个文件,可以用语句_____来代替它们。
在如何处理失败时,include() 产生一个警告而 require() 则导致一个致命错误; require_once()/include_once()
四、get_magic_quotes_gpc的作用是_______
本函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。当 magic_quotes_gpc 打开时,所有的 ‘ (单引号), ” (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。
五、在php中, heredoc是一种特殊的字符串, 他的结束标志必须是_____
结束标识符所在的行不能包含任何其它字符除”;”
六、写出一个正则表达式, 把$string中的所有数字全部删除
preg_replace(‘/d/U’,’’,$string);
七、找出/data1/source 目录中大于100k 的文件, 并复制到 ~/tmp/35/下
find /data1/source +size >100k | cp ~/temp/35/
八、perl –pi –e ‘s|ABCD|linux|g’ `find ./ -type f`的含义是
find ./-type f:找寻当前目录下的类型为f的文件
九、10 2 * * * /data0/apache/schele/ussd/topnews/import_data.pl > /dev/null 的含义:_______将import_data.pl清空或删除
十、rsync -avu 105903.zip 218.206.86.68::mmsres/resource/291/205的含义:_________备份数据用
-a 归档模式,递归传输文件;
-v 详细模式输出;
-u, –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
十一、写出x,y的值
十二、使用纯CSS实现未知寸的图片(但高度都小于200px) 在200px的正方形容器中水平和垂直居中,HTML代码如下
5. PHP应聘笔试题
题目一:
<?php
echo -10%3;
?>
答案:-1。
考查:优先级。因为-的优先级比%求余的优先级低,也就是-(10%3)。
题目二:
print (int)pow(2,32);
答案:0
题目三:
//file1.php
<?php
$a = '123';
?>
//file2.php
<?php
echo include('file1.php');
?>
答案:1.
考查:返回值。因include()也是一个函数,有返回值。在成功时返回1,失败时返回错误信息。如果被包含的文件有return,则inculde()成功时返回该文件的`返回值。
题目四:
<?php
$count = 5;
function get_count() {
static $count = 0;
return $count++;
}
++$count;
get_count();
echo get_count();
?>
答案:1.
考查:static和++。因static $count,所以只在第一次调用get_count的时候对$count赋值为0,第二次再进来这个函数,则不会第二次赋值。其次就是return $count++和return ++$count了,前者先返回,后者先++再返回。
题目五:
<?php
$arr= array(0 =>1,'aa' =>2,3,4);
foreach($arr as $key => $val){
print($key == 'aa' ? 5 : $val);
}
?>
答案:5534.
考查:类型转换。因遍历数组第一次的时候,$key和aa的比较实际就是0和aa的比较,一个是int一个是string,这个时候会转换类型,将字符串转换为数字再与数字比较。所以0=='aa'就是0==0,所以为true,也就是输出5。虽然PHP是若类型语言,但是人家也有类型的好吗。
题目六:
<?php
echo count (false);
$a = count ("567") + count(null)
+ count(false);
echo $a;
?>
答案:2.
考查:count的用法。
因count()的官方解释“If the parameter
is not an array or not an object
with implemented Countable
interface, 1 will be returned.”.意思是说,如果不是数组或者对象的其他类型,返回1.那么这个值应该就是1+0+1了(boolen人家也是一个类型,虽然是讨厌的false)。NULL的意思是没有值,难道在计数函数中还能有1?
题目七:
<?php
$arr = array(1,2,3);
foreach($arr as &$val) {
$val += $val % 2 ? $val++ : $val--;
}
$val = 0;
print(join('',$arr));
?>
答案:330。
考查:++和&。
因foreach结束后的数组应该是array(3,3,7);最后给第三个元素赋值为0,所以就是330了。其中注意的是&,如果有&则是对原变量操作,如果没有,则是先生成一个新变量,然后给这个变量复制,最后操作的是这个新变量。
题目八:
<?php
echo intval((0.1+0.7)*10);
?>
答案:7。
考查:浮点数的概念。
因0.1+0.7=0.8 0.8*10=8 所以转换成整数后还是8?错!因为0.1+0.7=0.8是浮点数,0.8*10在数学计算中是正整数8,可是在计算机中它仍然是浮点数8,什么叫浮点数8?每一个看起来像整数的浮点数,其实都不是整数,比如这个8,它其实只是
7.9999循环,无限接近于8,转换成整数会舍弃小数部分,就是7喽。
题目九:
<?php
ini_set('display_errors',0);
$arr = array(1=>1,3=>3);
$i = 2;
$a = 'test' . isset($arr[$i]) ?
$arr[$i] : $i;
请问$a的值是什么?
A、test B、NULL C、2 D、test2
?>
答案:B。
考查:优先级因“."的优先级高于三元运算符"?:"。所以程序其实报错了。会说$arr的索引2不存在。
题目十:
<?php
$a = 3;
$b = 5;
if($a = 5 || $b = 7) {
$a++;
$b++;
}
echo $a . " " . $b;
?>
A、6 8 B、6 6 C、2 6 D、1 6 E、4 6
答案:D。
考查:优先级,基础概念,++。因“="的优先级低于“||”,所以先逻辑判断再赋值。也就是($a = (5 || $b = 7))。所以,最后其实给a赋值了,$a等于1.
6. PHP基础面试题 – 第三天
1、 下面语句执行的结果是:
A:1 2 3 4
B:1 1 3 4
C:1 2 3 3
D:1 2 3 5
E:以上都不是
答案:B
2、下面那些说法是错误的:
答案:A
3、array_shift()函数的作用是?
A 在数组中新增一个元素
B 移除数组中的一个元素
C 交换一个数组的key和value
D 清除一个数组
答案:B
4、你将使用下面哪个函数来删除一个文件?
A unlink()
B delete()
C fdelete()
D: file_delete()
答案:A
5、请看代码,数据库关闭指令将关闭哪个链接标识?
A.$link1
B $link2
C 全部关闭
D 报错
答案:B
//mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的连接。如果没有指定 link_identifier,则关闭上一个打开的连接。
7. 经典PHP笔试题
经典PHP笔试题
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。下面是整理的关于经典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}
答案解析:substr 函数能够胜任,但考虑到输出三个字母就需要三次调用该函数,所以排除此方法。那么$alpha{$val}和$alpha{$val+1}是仅有的两个可能输出题目要求的字符串的选项。因为 0 是数
组的第一个索引,所以答案是 D。
2. 以下哪一项不能把字符串$s1 和$s2 组成一个字符串?
A.$s1 + $s2
B.”{$s1}{$s2}”
C.$s1.$s2
D.implode(”, array($s1,$s2))
E.以上都可以
答案解析:除 A 以外的选项都能输出题目要求的字符串。PHP中,加号+不能把两个字符串合并成一个。
3. 变 量 $email 的 值 是 字 符 串 [email protected] , 以 下 哪 项 能 把 字 符 串 转 化 成example.com?
A.substr($email, strpos($email, “@”));
B.strstr($email, “@”);
C.strchr($email, “@”);
D.substr($email, strpos($email, “@”)+1);
E.strrpos($email, “@”);
答案解析:substr 函数返回字符串的一部分,而 strpos 函数擅长从一个字符串中找出某个指定的子串。同时使用这两个函数将满足题目要求。注意,前一个函数从 0 开始索引,而后者不是,因此需
要+1。答案是 D。
4. 给定一个用逗号分隔一组值的字符串,以下哪个函数能在仅调用一次的情况下就把每个独立的值放入一个新创建的数组?
A.strstr()
B.不可能只调用一次就完成
C.extract()
D.explode()
E.strtok()
答案解析:答案是 D。explode 函数使用一个字符串分隔另一个字符串,并把结果放入一个新建的数组。strtok 函数也可以做同样的事,但需要多次调用。
5. 要比较两个字符串,以下那种方法最万能?
A.用 strpos 函数
B.用==操作符
C.用 strcasecmp()
D.用 strcmp()
答案解析:答案是 D。strcmp()提供了安全的字符串比较机制。注意,选项 C 是错的,strcasecmp()不是一个“万能”函数,因为它不区分大小写。
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}
答案解析:选项中没有一个正则表达式能真正代表题目所给字符串的匹配方式,但是选项 A 和 E仍然能勉强匹配。选项 A 太普通了,它能够匹配任何字符串,因此答案是 E。
7. 以下哪些函数能用来验证字符串的完整性?(三选)
A.md5()
B.sha1()
C.str_rot13()
D.crypt()
E.crc32()
答案解析:正确答案是 A,B 和 E。用 crypt()和 str_rot13()来验证一个字符串是否被改变,效率很低。crc32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。
8. 哪个 PHP 函数与以下脚本在 UNIX 系统下执行的效果近似?
function my_funct ($filename)
{
$f = file_get_contents ($filename);
return explode (" ", $f);
}
?>
A.fopen()
B.fread()
C.flock()
D.split_string()
E.file()
答案解析:正确答案是 A,B 和 E。用 crypt()和 str_rot13()来验证一个字符串是否被改变,效率很低。crc32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。
9. 基于指定的式样(pattern)把一个字符串分隔开并放入数组,以下哪些函数能做到?(双
选)
A.preg_split()
B.ereg()
C.str_split()
D.explode()
E.chop()
答案解析:尽管条件不同,但 preg_split 和 explode 函数都能满足题目要求。ereg()拿一个正则表达式匹配一个字符串;str_split()按固定长度分隔字符串;而 chop()则是 rtrim()别名,用来移除
字符串末尾处的空格。
10.以下脚本输出什么?
echo 'Testing ' . 1 + 2 . '45';
?>
A.Testing 1245
B.Testing 345
C.Testing 1+245
D.245
E.什么都没有
答案解析:本题考察你对字符串操作及操作符优先级的认识。连接运算符(.)的优先级比加号(+)高。因此 PHP 解释器实际执行的运算可以表示为(‘Testing’ . 1) + (2 . ‘45’)。由于字符串
test 1 不是数字,所以加号前面的运算等于 0。加号后面的运算等于 245,PHP 输出的'结果是 0+245,等于 245,所以答案是 D。
11.以下脚本输出什么?
$s = '12345';
$s[$s[1]] = '2';
echo $s;
?>
A.12345
B.12245
C.22345
D.11345
E.Array
答案解析:可以用访问数组元素的方式访问字符串中的字符,因此脚本只是把字符串中的第二个字符($s[1])替换成了字符 2,最终将输出 12245。答案是 B。
12.方框中的正则表达式能与以下哪些选项匹配?(双选)
/.**123d/
A.******123
B.*****_1234
C.******1234
D._*1234
E._*123
答案解析:本题的要点是理解这个正则表达式的含义——从左往右,首先是零个或多个任意字符(.*),跟着是一个星号(*),然后是 123,最后是一个数字。因此答案是 C 和 D。
13.以下哪个比较将返回 true?(双选)
A.‘1top’ == ‘1’
B.‘top’ == 0
C.‘top’ === 0
D.‘a’ == a
E.123 == ‘123’
答案解析:B 和 E 正确。选项 B 中,在比较时,字符串 top 等同于数字 0。==操作符不比对数据类型,所以将返回 true。答案 E 中,字符串 123 等同于数字 123,比较将返回 true。
14.如果用+操作符把一个字符串和一个整型数字相加,结果将怎样?
A.解释器输出一个类型错误
B.字符串将被转换成数字,再与整型数字相加
C.字符串将被丢弃,只保留整型数字
D.字符串和整型数字将连接成一个新字符串
E.整形数字将被丢弃,而保留字符串
答案解析:字符串将被转换成数字(如果无法发生转换就是 0),然后与整型数字相加。答案是 B。
15.考虑如下脚本。假设 http://www.php.net 能被访问,脚本将输出什么?
$s = file_get_contents ("http://www.php.net");
strip_tags ($s, array ('p'));
echo count ($s);
?>
A.www.php.net 的主页的字符数
B.剔除标签后的 www.php.net 主页的字符数
C.1
D.0
E.剔除以外的标签后的 www.php.net 主页的字符数
答案解析:代码的本意是剔除 www.php.net 主页上除了 p 以外的的所有 HTML 标签。可实际上,在代码的最后一行使用了 count 函数,它统计变量中的元素数量,而不是字符串中的字符数。由于字符
串是标量,对字符串使用 count 函数将永远返回 1。答案是 C。
16.哪个函数能不区分大小写得对两个字符串进行二进制比对?
A.strcmp()
B.stricmp()
C.strcasecmp()
D.stristr()
E.以上都不能
答案解析:题目其实就是在描述 strcasecmp 函数的作用,因此答案是 C。
17.以下哪些函数能把字符串里存储的二进制数据转化成十六进制?(双选)
A.encode_hex()
B.pack()
C.hex2bin()
D.bin2hex()
E.printf()
答案解析:正确答案是 B 和 D。pack 函数能对二进制数据进行复杂的格式化,包括将字符串中的字符转化成十六进制表示。bin2hex 函数也有同样的转化功能。注意,printf()能将整数转化成十六进
制数,但无法转化字符串。
18.哪个函数能用来确保一个字符串的字符数总是大于一个指定值?
答案解析:这是在说 str_pad 函数,它可以把字符串填充到指定长度。
19.以下脚本输出什么?
echo wordwrap ($a, 1, "c", false);
?>
答案解析:脚本将输出 ablecostscindy。wordwrap 函数通常用来把字符串切割成指定长度。然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为 false,因此函数不会从
单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。
20.以下脚本输出什么?
echo substr_replace ($x, 'x', 1, 2);
?>
A.x
B.axle
C.axxle
D.applex
E.xapple
答案解析:脚本将输出 ablecostscindy。wordwrap 函数通常用来把字符串切割成指定长度。然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为 false,因此函数不会从
单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。
;8. 程序员面试必备PHP基础面试题 – 第十一天
一、两张表 city表和province表。分别为城市与省份的关系表。
表名:city
id City Provinceid
1 广州 1
2 深圳 1
3 惠州 1
4 长沙 2
5 武汉 3
………. 广州
表名称:province:
id Province
1 广东
2 湖南
3 湖北
……….
1、写一条sql语句关系两个表,实现:显示城市的基本信息。显示字段:城市id ,城市名, 所属省份 。
如:
Id(城市id) Cityname(城市名) Privence(所属省份)
2、如果要统计每个省份有多少个城市,请用group by 查询出来。显示字段:省份id ,省份名,包含多少个城市。
二、主键 和外键表示什么?一般用于做什么?
主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。
外键:若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。A为基本表,B为信息表。
在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份证号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份证号一样,必须是每个记录的值都不同,这才能根据
主键的值来确定不同的记录。
关系:外键一定是另外某个表的主键。
三、select now(),Date_ADD(now(),INTERVAL 14 day),Date_SUB(now(),INTERVAL 3 Day) from table; 会获得什么内容,请写出来。
会获得三条数据:
第一条:当前时间;
第二条:当前时间加上14天;
第三条:当前时间减去3天。
四、您所知道的MYSQL 数据库备份,还原方式有哪几种?
备份:
一,搭建主从架构,master-slave,通过binlog文件同步复制主库的数据,也可以直接通过binlog文件恢复数据。
二,通过系统计划任务执行mysqlmp做周期性全备份。
三,物理备份,直接拷贝数据文件、参数文件、日志文件。
还原:
一.通过mysql操作工具,如phpmyadmin,sqlyog等导入备份过的数据库文件。
二.将物理备份的文件拷贝到mysql的data目录下
五、内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量
创建上表,写出MySQL语句
六、同样上述内容管理系统:表comment记录用户回复内容,字段如下
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示0
七、内容管理系统,表category保存分类信息,字段如下
category_id int(4) not null auto_increment;
category_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单
八、PHP文件操作
1、内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路
2、简单描述用户修改发布内容的实现流程和基本思路
1)当用户提交后生成一个由url地址MD5后的文件的编译页面,用文件处理file函数生成一个模板合成页,判断模板编译页是否有,模板页无或者编译页的创建时间戳小于模板页的修改时间都会从新生成编译页面,编译后的页面会调用对应数据库的值显示在页面中,通过对内存数据的读取释放,显示出我们看到的静态数据,然后用file文件将其保存起来生成静态的页面
2)当用户修改了发布内容都会修改数据相关的内容,并通过编译页面更新静态数据并用文件的方式缓存起来,当用户查看时将不做任何数据库查找,直接调用该缓存文件即可
9. PHP程序员上机面试题(并附答案,回答好的加分)
题集网上有一套php的面试题:http://www.tijee.com/tags/46-php-face-questions/posts
10. 腾讯php面试题
腾讯php面试题
php程序员一般会遇到的面试题:
1. 基本知识点
HTTP协议中几个状态码的含义:503 500 401 200 301 302
Include require include_once require_once 的区别.
PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等。
HEREDOC介绍
写出一些php魔幻方法;
一些编译php时的configure 参数
向php传入参数的两种方法。
(mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;
error_reporting 等调试函数使用
您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?
posix和perl标准的正则表达式区别;
Safe_mode 打开后哪些地方受限.
写代码来解决多进程/线程同时读写一个文件的问题。
写一段上传文件的代码。
Mysql 的存储引擎,myisam和innodb的区别。
2. web 架构,安全,项目经验
介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。
使用mod_rewrite,在服务器上没有/archivers/567.html这个物理文件时,重定向到index.php?id=567 ,请先打开mod_rewrite.
MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
写出一种排序算法(原理),并说出优化它的方法。
请简单阐述您最得意的开发之作
对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题
您是否用过模板引擎? 如果有您用的模板引擎的名字是?
请介绍Session的原理,大型网站中Session方面应注意什么?
测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。
正则提出一个网页中的'所有链接.
介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。
您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。
大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?
相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。
一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。
3. unix/linux 基本使用
linux下查看当前系统负载信息的一些方法。
vim的基本快捷键。
ssh 安全增强方法;密码方式和rsa key 方式的配置。
rpm/apt/yum/ports 装包,查询,删除的基本命令。
Makefile的基本格式,gcc 编译,连接的命令,-O0 和-O3区别。
gdb,strace,valgrind的基本使用.
4. 前端,HTML,JS
css盒模型。
javascript中的prototype。
javascript中this对象的作用域。
IE和firefox事件冒泡的不同。
什么是怪异模式,标准模式,近标准模式。
DTD的定义
IE/firefox常用hack.
firefox,IE下的前端js/css调试工具。
;