一
1、写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
2、在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的 编码格式,以下是一个标准的 meta 语句
<META http-equiv='Content- Type' content='text/html; charset=gbk'>
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5
请注意:
(1) 需要处理完整的 html 页面,即不光此 meta 语句
(2) 忽略大小写
(3) ' 和 " 在此处是可以互换的
(4) 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行
(5) 注意处理多余空格
3、写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
4、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
5、简述论坛中无限分类的实现原理。
6、设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。
8、写个函数来解决多线程同时读写一个文件的问题。
9、echo count("abc");
1)用js取得________方法取得该对象;
2)用________属性取得属性title的属性值;
3)用________方法取得属性sina_title的属性值;
23、php中过滤HTML的函数是_______,转义的函数是____________;
如果有一个表tl_user存储学生ID和名字name,另外一个表tl_score存储学生ID、科目subject和成绩score(有的学生没有考试成绩),写出sql语句打印出学生名字和各科总成绩;
30、php中分割字符串成数组的函数__________,连接数组成字符串的是_______;
35、strlen()与mb_strlen的作用分别是什么
请实现下列需求:
1)数据库结构。无需写建表语句,用类似下面的表格,描述清楚即可
表明 table_aaa
字段名 字段说明 字段类型 索引
name 姓名 Varchar(64) 唯一索引
gender 性别 Enum(‘M’,‘F’)
注意,要在索引栏中注明是否需要创建索引,以及要创建的索引的类型
2)用一个sql语句查询出发表留言数量大于10条的用户名及其留言数量,查询结果按文章数量降序排列
44、系统分析,假设有一个博客系统,数据库存储采用mysql,用户数量为1000万,预计文章总数为10亿,每天有至少10万的更新量,每天访问量为5000万,对数据库的读写操作的比例超过10:1,你如何设计该系统,以确保其系统高效,稳定的运行?
提示:可以从数据库设计,系统框架,及网络架构方面进行描述,可以自由发挥
48、请列举、你能想到的所有的字符串查找算法,并加注释简单说明。
50、写出、你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面)
1
1.1
$pathinfo = pathinfo("http://www.sina.com.cn/abc/de/fg.php?id=1");
$query = $pathinfo["extension"];
if (strpos($query,"?") !== false)
return substr($query,0,strpos($query,"?"));
return $query;
1.2
$strs = explode(".", http://www.sina.com.cn/abc/de/fg.php?id=1);
$extension = array_pop($strs);
$pos = strpos($extension,"?");
if ($pos)
$extension = substr($extension,0,$pos);
echo $extension;
1.3
$baseName = basename("http://www.sina.com.cn/abc/de/fg.php?id=1");
$extension = substr($baseName,strpos($baseName,"."),strpos($baseName, "?")-strpos($baseName,"."));
echo $extension;
1.4 使用正则
$strs = "http://www.sina.com.cn/abc/de/fg.php?id=1";
preg_match("/(\..*)(\?)?/", $strs ,$mathes); 要确定最后一个符合条件的
preg_match_all('/[\w\/\:\-]+\.([\w]+)$/',$path, $out);
return$out[1][0];
1.5
$strs = $_SERVER["PHP_SELF"];
$extension = substr($strs,strpos($strs,"."));
echo $extension;
1.6
$path = parse_url("http://localhost/df/ff.php?d=1");
$extension = substr($path["path"],strpos($path["path"],"."));
echo $extension;
还有一个可以使用strrchr(),找出制定字符在字符串中最后一次出现
2.
$string = "<META http-equiv = 'Content-Type' content= 'text/html; charset = gbk'>";
$aa = preg_replace("/(<meta .+?charset\s*=\s*)([-\w]+)([\'\">\s]+)/i","\\1utf-8\\3",$string);
3.
function calculateRelativePath($a,$b) {
if (empty($a) || empty($b))
return;
$flag = "";
$aexs = explode("/",$a);
$bexs = explode("/",$b);
$aDiffb = array_diff_assoc($aexs,$bexs);
$count = count($aDiffb );
for($i=0; $i < $count-1; $i++) {
$flag .= "../";
}
$bDiffa = array_diff_assoc($bexs,$aexs);
return $flag. implode("/",$bDiffa);
}
echo calculateRelativePath("/a/b/c/d/e.php","/a/b/12/34/c.php");
echo "<br />";
echo calculateRelativePath("/a/b/c/d/e.php","/b/12/34/c.php");
4.
function traversalFolder($currDir) {
$filesArray = array();
$files = scandir($currDir);
foreach ($files as $file) {
$noPoint = ($file != "." & $file != "..");
$subFile = $currDir.DIRECTORY_SEPARATOR.$file;
$isDir = is_dir($subFile);
$isDir &= $noPoint;
if ($isDir)
$filesArray = array_merge($filesArray,traversalFolder($subDir));
elseif ($noPoint)
$filesArray[] = $file;
}
return $filesArray;
}
print_r(traversalFolder("F:/test"));
7.
使用高性能的服务器
多使用缓存
页面服务器、数据库服务器、图片服务器、上传下载服务器分离
数据库集群,表分割(水平分割和垂直分割)和表散列
负载均衡
重视每个代码开发细节,特别是大循环,多请求和SQL语句复杂的时候
1.代码要干净
2.数据库要分表,可以1个月数据存储一张表:
3.读写分离:写入用一台服务器,然后同步到另外的服务器进行读出。
4.如果有图片,建议有专门图片服务器,使用独立域名访问
5.网站前台和后台如果有条件尽量分开
首先 增量数据说明是写入操作比较频繁,可以采用主从分离的方式
8.
function writeData($path,$mode,$data) {
$fp = fopen($path,$mode);
$retries = 0;
$max_retries = 100;
do {
if ($retries > 0)
usleep(rand(1,10000)); // 间隔一定时间,重新锁定
$retries +=1;
} while(!flock($fp,LOCK_EX) && $retries <= $max_retries);
if ($retries = 100)
return false;
fwrite($fp,$data);
flock($fp,LOCK_UN);
fclose($fp);
return true;
}
模式 描述
r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末端写内容,来保持文件内容。
x 只写。创建新文件。如果文件已存在,则返回 FALSE。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。注释:如果 fopen() 无法打开指定文件,则返回 0 (false)。
主要的思路就是锁定,或者使用file_put_contents()第三个参数也有锁定
file_put_contents('/xxx/xxx.txt', 'I am 21andy', LOCK_EX); // LOCK_EX获得一个独占锁定
13.2 在安全模式下,一些尝试访问文件系统的函数功能将被限制,运行web服务器用户id,如果想要操作某个文件,则必须拥有该文件读取或者写入的访问权限,例如一些directory函数和filesystem函数 chdir、chown等函数
13.3 一些加载dll的函数会受到影响
13.4 在php安全模式打开的时候,需要执行操作系统程序,如popen() systen()exec(),的时候,必须是在safe_mode_exec_dir选项指定目录的程序,否则执行将失败。即使允许执行,那么也会自动的传递给escapeshellcmd函数进行过滤。
13.5. 用户输入输出函数(fopen() file()require(),只能用于调用这些函数有相同脚本的拥有者)
13.6 mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同
13.7. putenv函数和其他一些尝试改变php环境变量的函数set_time_limit, set_include_path 也将被忽略。
下列函数将会受到影响
exec, shell_exec, passthru, system, popen
http://a138s.blog.163.com/blog/static/31474077201010454112760/
$r = 0 ;
for( $i = 2 ; $i <= $n ; $i ++) {
$r =( $r + $m )% $i ;
}
print_r ( yuesefu ( 3 , 3 ));
$thisSum += $strs[$i];
$thisSum = 0;
}
在my.cnf文件中添加或者修改以下两个变量:
wait_timeout=2880000
interactive_timeout = 2880000
sql = "set interactive_timeout=24*3600";
mysql_real_query(...)
36、参见试卷
if (is_dir($path))
$re = mkdir($path,$mode,true);
id 留言ID int (10) 主键
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
读写比例可以看出数据可以做缓存或采用静态化的处理,并采用读写分离的方式