一义、二义、三义、四义:
1.新闻系列
2、成功系列
3.重定向系列
4. 为错误系列辩护
五。 服务器端错误系列
302:临时转移成功,请求内容已转移到新位置
403:禁止访问
500内部服务器错误
401:代表未授权。
4、Linux下构建压缩包和解压包的命令
tar.gz:
打包:tarczffile.tar.gzfile.txt
解压:tarxzffile.tar.gz
Bz2:
打包:bzip2[-k]文件
解压:bunzip2[-k] 文件
Gzip(仅适用于文件,不适用于原始文件)
打包:gzipfile1.txt
解压:gunzipfile1.txt.gz
Zip: -r 表示目录
打包:zipfile1.zipfile1.txt
解压:unzipfile1.zip
5、请写出数据类型(intcharvarchardatetimetext)的含义;
varchar 和 char 有什么区别?
Int 整数
char 定长字符
Varchar 变长字符
日期时间日期时间类型
文本类型
Varchar 和 char 的区别在于 Char 是定宽字符类型,它分配多少空间就占用多少空间。 Varchar是一种变宽字符类型,内容有多少空间就占用多少空间,可以有效节省空间。 由于varchar类型是可变的,当数据宽度变化时服务器需要执行额外的操作,因此效率比char类型低。
6.MyISAM和InnoDB之间的基本区别是什么? 索引结构如何实现?
MyISAM类型不支持事务、表锁,并且容易产生碎片。 需要经常优化jquery 字符 长度,读写速度较快jquery 字符 长度,而InnoDB类型支持事务、行锁,具有崩溃恢复能力。 读写速度比MyISAM慢。
创建索引:alerttabletablenameaddindex(`数组名称`)
7.不要使用cookies向客户端发送cookie。
理解:当session_start()开启时,会生成一个常量SID。 当COOKIE打开时,该常量为空。 当 COOKIE 关闭时,PHPSESSID 的值存储在该常量中。
通过在URL后面添加SID参数来传递SESSIONID的值,这样客户端页面就可以使用SESSION上面的值。
当客户端打开COOKIE,服务器打开SESSION。当浏览器第一次请求时,服务器会发送一个COOKIE给浏览器来存储SESSIONID。 当浏览器第二次请求时,会保存已有的SESSIONID
8.isset()和empty()的区别
Isset 判断变量是否存在。 可以传入多个变量,如果其中一个变量不存在,则返回false。 empty 确定变量是否为空。 只能传递一个变量。 如果为空或 false,则返回 true。
9、如何在页面之间(至少两种形式)传递变量?
GET、POST、COOKIE、SESSION、隐藏表单
10. 编写匹配 URL 的正则表达式。
‘/^(https?|ftps?)://(www).([^./]+).(com|cn|org)(/[w-./?%&=]*)?/i’
11.请编写一个常用的排序算法,并使用PHP实现冒泡排序,将字段$a=array()从小到大排序。
常见的排序算法:
冒泡排序,
快速排序,
简单的选择排序,
堆排序,
直接插入排序,
希尔排序法,
归并排序方法。
冒泡排序方法的基本思想是从后到前(降序)多次扫描待排序记录的关键字。 当发现两个相邻关键字的顺序与排序要求不一致时,将对两条记录进行交换。 这样,关键字较小的记录就会从前到前逐渐连接起来,就像水底向下漂浮的气泡一样,所以这种算法也称为冒泡排序法。
//冒泡排序
function mysort($arr){
for($i=0;$i<count($arr); $i++){
for($j=0; $j<count($arr)-1-$i; $j++){
if($arr[$j]> $arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
return $arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));
12.请解释一下PHP中按值传递和按引用传递的区别。 何时按值传递,何时按引用传递?
按值传递:函数范围内对值的任何更改在函数外部都会被忽略
通过引用传递:对函数范围内的值的任何更改也会反映在函数外部
相同点和不同点: 当按值传递时,PHP 必须复制该值。 特别是对于小字符串和对象,这可能是一项昂贵的操作。 通过引用传递不需要复制值,这对于性能提升非常有用。
13. PHP中error_reporting的作用是什么?
设置PHP的错误级别并返回当前级别。
14. 请使用正则表达式(RegularExpression)编写一个函数来验证电子信息的格式是否正确。
if(isset($_POST['action']) && $_POST['action']==’submitted’){
$email=$_POST['email'];
$var_email= "/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[0-9a-zA-Z-]+){1,3}$/"
if(!preg_match($var_email,$email)){
echo“电子邮件检测失败”;
}else{
echo“电子邮件检测成功”;
}
}
15.写一个二维字段排序算法函数,可以通用,可以调用php外部函数(array_multisort())
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
if(!is_array($arr)) {
return false;
}
$keysvalue =array();
foreach($arr as $key => $val) {
$keysvalue[$key] = $val[$keys];
}
if($order == 0){
asort($keysvalue);
}else {
arsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalueas $key => $vals) {
$keysort[$key] = $key;
}
$new_array =array();
foreach($keysortas $key => $val) {
$new_array[$key] = $arr[$val];
}
return $new_array;
}
16. 请将字符串'AppleOrangeBananaStrawberry'以空格为间隔分割,形成字段$fruit,
*该字段中的所有元素均大写并按字母顺序排序
class sort {
private $str;
public function __construct($str) {
$this->str=strtolower($str);
}
private function explodes() {
if(empty($this->str)) returnarray();
$arr=explode("",$this->str);
return is_array($arr)?$arr:array($arr);
}
public function sort() {
$explode=$this->explodes();
sort($explode);
return $explode;
}
}
$str='Apple Orange Banana Strawberry';
$sortob=new sort($str);
var_dump($sortob->sort());
17、用户输入一串字符串$string,要求$string只能包含小于0的数字和英文逗号,请使用正则表达式验证,不符合的$string返回错误信息要求
class regx {
public staticfunction check($str) {
if(preg_match("/^([1-9,])+$/",$str)){
return true;
}
return false;
}
}
$str="12345,6";
if(regx::check($str)) {
echo "suc";
} else {
echo "fail";
}
18、windows平台上ApacheHttpServer启动失败,排查思路是什么?
检查apache使用的80端口是否被占用。 如果被占用,先停止占用80端口的服务,然后启动apache服务器
19PHPsession扩展默认将会话数据存储在哪里?
A) SQLite数据库
B)MySQL数据库
C) 共享内存
D)文件系统
E) 会话服务器
答案:D
20.如果要手动加载类,下列哪个函数声明是正确的
A) 函数自动加载($class_name)
B) function__autoload($class_name,$file)
C) 函数__autoload($class_name)
D) function_autoload($class_name)
E) 函数自动加载($class_name, $file)
答案:C
21、PHP程序使用utf-8编码,下列程序的输出结果是什么?
A) 9 B) 13 (gbk) C) 18 D) 17 (utf8)
答案:B
22. PHP字段有哪些功能你知道?
array()----创建数组
array_combine()----通过合并两个数组来创建一个新数组
range()----创建并返回一个包含指定范围的元素的数组
compact()----建立一个数组
array_chunk()----将一个数组分割成多个
array_merge()----把两个或多个数组合并成一个数组
array_slice()----在数组中根据条件取出一段值
array_diff()----返回两个数组的差集数组
array_intersect()----计算数组的交集
array_search()----在数组中搜索给定的值
array_splice()----移除数组的一部分且替代它
array_key_exists()----判断某个数组中是否存在指定的key
shuffle()----把数组中的元素按随机顺序重新排列
array_flip()----交换数组中的键和值
array_reverse()----将原数组中的元素顺序翻转,创建新的数组并返回
array_unique()----移除数组中重复的值
23、php读取文件内容有多少种方法和函数?
打开文件以供稍后阅读。 fopen() fread()
打开读取一次即可完成file_get_contents()
24. 在下面的程序中,输入111是变量str的哪个值?
if(!$str){echo111;}
$str中的值: 0, '0', false, null, ""
25.你了解PHP的一些技术(smarty等)吗?
Smarty, jquery, ajax, memcache, div+css, js,mysqli,pdo,svn,thinkphp,brophp,yii
26. 谈谈你对缓存技术的理解?
1、缓存技术是将动态内容缓存在文件中,在一定时间内访问动态页面直接调用缓存文件,无需重新访问数据库。
2.使用memcache进行缓存。
27.你知道哪些设计模式?
鞋厂模式、策略模式、单元素模式、观察者模式、命令链模式
28. 谈谈你对代码管理的理解? 经常使用这些代码版本控制软件?
一般来说,一个项目是由一个团队开发的。 每个人将自己写好的代码提交到版本服务器,项目负责人按照版本进行管理,方便版本控制,提高开发效率,保证需要的时候可以返回旧版本。 。
常用的版本控制器:SVN、GIT
29. 谈谈你对SVN的理解? 共同点和不同点?
SVN是版本控制器,程序员开发的代码提交到版本服务器集中管理。
SVN的优点:代码集中管理、版本控制方便、操作相对简单、权限控制方便。
缺点:不能随便更改服务器项目文件夹。
30.如何找到PHP.ini的路径?
一般在php的安装目录下,或者在window系统的windows目录下。
31. PHP加速模式/扩展? PHP 调试模式/工具?
ZendOptimizer 加速扩展
调试工具:xdebug
32、下面的程序中,当变量str的值输入111时?
if(!$str){echo111;}
$str中的值: 0, '0', false, null, ""
33.你经常使用哪些mysql命令?
进入mysql管理命令行的命令?
Mysql -u root -p 回车密码
show databases; 这个命令的作用?
显示当前mysql服务器中有哪些数据库
show create database mysql; 这个命令的作用?
显示创建数据库的sql语句
show create table user; 这个命令的作用?
显示创建表的sql语句
desc user; 这个命令的作用?
查询user表的结构
explain select * from user; 这个命令的作用?
获取select相关信息
show processlist; 这个命令的作用?
显示哪些线程正在运行
SHOW VARIABLES; 这个命令的作用?
显示系统变量和值
SHOW VARIABLES like ’%conn%’; 这个命令的作用?
显示系统变量名包含conn的值
LEFT JOIN 写一个SQL语句?
SELECTA.id,A.class FROM A LEFT JOIN B ON A.cid=B.id
34、in、notni、exist、notexist的作用和区别是什么?
其中
Notin 不在其中
存在 存在
注意 不存在
35.解释一下Linux下安装PHP的过程?
安装软件之前先安装编译工具gcc、gcc-c++
拷贝源码包,解包解压缩
cd /lamp/php进入php目录
./configure–prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc
指定安装目录和配置文件目录
Make 编译
Make install安装
36、解释一下Linux下安装Mysql的过程?
groupadd mysql 添加一个用户组mysql
useradd -gmysql mysql 添加一个mysql用户指定分组为mysql
cd /lamp/mysql 进入mysql目录
./configure–prefix=/usr/local/mysql/ –with-extra-charsets=all
Make
Make all
37、描述一下Linux下安装apache的过程?
cd /lamp/httpd 进去apache软件目录
./configure–prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr
Make
Make all
38、请写一段ajax提交的js代码,或者写出ajax提交的流程逻辑。
var xmlhttp;
if(window.XMLHttpRquest){
xmlhttp=newXMLHttpRequest();
}elseif(window.ActiveXObject){
xmlhttp=newActiveXObject(‘Microsoft.XMLHTTP’);
}
xmlhttp.open(‘GET’,’1.php?aa=name’,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var text=xmlhttp.responseText;
}
}
}
xmlhttp.send(null);
39、讲解Cookie的设置和获取过程
设置COOKIE的值:
Setcookie(名称、值、保存时间、有效域);
获取值:$_COOKIE['name'];
40、面向对象中socket和具体类有什么区别和应用场景?
1、具有具体方法的类称为具体类。 具体类中不一定只有具体方法,具体方法必须用abstract关键字定义。
2.所有接口都是具体方法,方法不需要通过抽象来定义。
3、当多个同类型的类需要设计下层时,一般设计为具体类。 当多个异构类需要设计下层时,一般设计为socket。
文章首发:
以上是本文的全部内容,希望对大家的学习有帮助,觉得有用,就需要就支持一下吧!
发表评论