php面试题10(复习)
php面试题10(复习)
一、总结
复习
二、php面试题10
21、谈谈 asp,php,jsp 的优缺点(1 分)(asp要钱,jsp学习成本大)
答:ASP 全名 Active Server Pages,是一个 WEB 服务器端的开发环境, 利用它可以产生
和运
行动态的、交互的、高性能的 WEB 服务应用程序。ASP 采用脚本语言 VB Script 作为自
己的开发语言。
PHP 是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用 C,Java 和 Perl 语言
的语法, 并耦合 PHP 自己的特性,使 WEB 开发者能够快速地写出动态生成页面.它支持目前
绝大多数数据库。还有一点,PHP 是完全免费的,不用花钱,你可以从 PHP 官方站点
(http://www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你
自己需要的特色。
JSP 是 Sun 公司推出的新一代站点开发语言,他完全解决了目前 ASP,PHP 的一个通
云知梦,只为有梦想的人!
病--脚本级执行(据说 PHP4 也已经在 Zend 的支持下,实现编译运行).Sun 公司借
助自己在 Java 上的不凡造诣,将 Java 从 Java 应用程序 和 Java Applet 之外,又有
新的硕果,就是 Jsp--Java Server Page。Jsp 可以在 Serverlet 和 JavaBean 的支持
下,完成功能强大的站点程序。
三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能
力。但 JSP 代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP
页面的第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信
息的显样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务
器,而 ASP 、PHP、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执
行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP 三者
都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。
22、谈谈对 mvc 的认识(1 分)
答:由模型(model),视图(view),控制器(controller)完成的应用程序
由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;
23、写出发贴数最多的十个人名字的 SQL,利用下表:
members(id,username,posts,pass,email)(2 分)
答: select username,count(id) from members group by id order by count(id)
desc limit 10;
id name class
1 user1 1
2 user2 2
3 user3 1
4 user4 2
5 user5 1
select name from (select * from table order by id desc) table group by class;
24. 请说明 php 中传值与传引用的区别。什么时候传值什么时候传引用?(2 分)
答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php 必须复制值。特别是对于大型的字符串和对象来说,这将会
是一个代价很大的操作。
按引用传递则不需要复制值,对于性能提高很有好处。
25. 在 PHP 中 error_reporting 这个函数有什么作用? (1 分)
答:设置错误级别与错误信息回报
26. 请写一个函数验证电子邮件的格式是否正确 (2 分)
答:function checkEmail($email)
{
$pregEmail =
"/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{
2})?/i";
return preg_match($pregEmail,$email);
}
$ptn="/\w+@(\w+)(\.\w+)+/";
27. 简述如何得到当前执行脚本路径,包括所得到参数。(2 分)
答:
[REQUEST_URI] => /index.php?id=3&name=user1&age=20
Script_filename
28、JS 表单弹出对话框函数是?获得输入焦点函数是? (2 分)
答:弹出对话框: alert(),prompt(),confirm()
获得输入焦点 focus()
29、JS 的转向函数是?怎么引入一个外部 JS 文件?(2 分)
答:window.location.href,<script type="text/javascript"
src="js/js_function.js"></script>
30、foo()和@foo()之间有什么区别?(1 分)
答:@foo()控制错误输出
31、如何声明一个名为”myclass”的没有方法和属性的类? (1 分)
答:class myclass{ }
32、如何实例化一个名为”myclass”的对象?(1 分)
答:new myclass()
33、你如何访问和设置一个类的属性? (2 分)
答:$object = new myclass();
$newstr = $object->test;
$object->test = "info";
34、mysql_fetch_row() 和 mysql_fetch_array 之间有什么区别? (1 分)
答:mysql_fetch_row 是从结果集取出 1 行数组,作为枚举
mysql_fetch_array 是从结果集取出一行数组作为关联数组,或数字数组,两者兼得
mysql_affected_rows() 增删改
mysql_num_rows() 查
35、GD 库是做什么用的? (1 分)
答:gd 库提供了一系列用来处理图片的 API,使用 GD 库可以处理图片,或者生成图片。
在网站上 GD 库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。
36、指出一些在 PHP 输入一段 HTML 代码的办法。(1 分)
答:echo "<a href='index.php'>aaa</a>";
37、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1 分)
(a) fget() (b) file_open() (c) fopen() (d) open_file() [ c ]
38、下面哪个选项没有将 john 添加到 users 数组中? (1 分)
(a) $users[] = ‘john’;
(b) array_add($users,’john’);
(c) array_push($users,‘john’);
(d) $users ||= ‘john’; [ a , c ]
bd
39、下面的程序会输入是否?(1 分)
$num = 10;
function multiply(){
$num = $num * 10;
}
multiply();
echo $num;
?>
输出:10
40、使用 php 写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2 分)
表名 User
NameTelContentDate
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
请根据上面的题目完成代码:
$mysql_db=mysql_connect("local","root","pass");
mysql_select_db("DB",$mysql_db);
$sql="SELECT * FROM `user` WHERE name='张三'";
$result = mysql_query($sql);
while($rs = mysql_fetch_array($result)){
echo $rs["tel"].$rs["content"].$rs["date"];
}
41、如何使用下面的类,并解释下面什么意思?(3)
classtest{
functionGet_test($num){
$num=md5(md5($num)."En");
return$num;
}
}
答:$testnum = "123";
$object = new test();
$encrypt = $object->Get_test($testnum);
echo $encrypt;
类 test 里面包含 Get_test 方法,实例化类调用方法给字符串加密
42、写出 SQL 语句的格式 : 插入 ,更新 ,删除 (4 分)
表名 User
NameTelContentDate
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用 SQL 语句新增至表
中
mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES
('小王','13254748547','高中毕业','2007-05-06')")
(b) 请用 sql 语句把张三的时间更新成为当前系统时间
$nowDate = date("Ymd");
mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='张山
'");
(c) 请写出删除名为张四的全部记录
mysql_query("DELETE FROM `user` WHERE name='张四'");
43、请写出数据类型(int char varchar datetime text)的意思; 请问 varchar 和 char 有
什么区别(2 分)
答:int 是数字类型,char 固定长度字符串,varchar 实际长度字符串,datetime 日期时间
型,text 文本字符串,char 的场地固定为创建表设置的长度,varchar 为可变长度的字符
44、写出以下程序的输出结果 (1 分)
$b=201;
$c=40;
$a=$b>$c?4:5;
echo$a;
?>
答:4
45、检测一个变量是否有设置的函数是否?是否为空的函数是?(2 分)
答:isset($str),empty($str);
46、取得查询结果集总数的函数是?(1 分)
答:mysql_num_rows($result);
47、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1 分)
答:echo $array[0];
48、请将 41 题的数组的值用','号分隔并合并成字串输出(1 分)
答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}
Join()
49、$a = 'abcdef'; 请取出$a 的值并打印出第一个字母(1 分)
答:echo $a{0} 或 echo substr($a,0,1)
50、PHP 可以和 sql server/oracle 等数据库连接吗?(1 分)
答:当然可以
pdo
51、请写出 PHP5 权限控制修饰符(3 分)
答:public(公共),private(私用),protected(继承)
52、请写出 php5 的构造函数和析构函数(2 分)
答:__construct , __destruct
53、完成以下:
(一)创建新闻发布系统,表名为 message 有如下字段 (3 分)
id文章 id
title 文章标题
content 文章内容
category_id文章分类 id
hits 点击量
答:CREATE TABLE 'message'(
'id' int(10) NOT NULL auto_increment,
'title' varchar(200) default NULL,
'content' text,
'category_id' int(10) NOT NULL,
'hits' int(20),
PRIMARY KEY('id');
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
(二)同样上述新闻发布系统:表 comment 记录用户回复内容,字段如下 (4 分)
comment_id回复 id
id 文章 id,关联 message 表中的 id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高
的排在最前面
文章 id 文章标题 点击量 回复数量
用一个 SQL 语句完成上述查询,如果文章没有回复则回复数量显示为 0
答:SELECT message.id id,message.title title,IF(message.`hits` IS
NULL,0,message.`hits`) hits,
IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN
comment ON message.id=comment.id GROUP BY message.`id`;
(三)上述内容管理系统,表 category 保存分类信息,字段如下 (3 分)
category_idint(4)notnullauto_increment;
categroy_namevarchar(40)notnull;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单
答:function categoryList()
{
$result=mysql_query("select category_id,categroy_name from category")
or die("Invalid query: " . mysql_error());
print("<select name='category' value=''>\n");
while($rowArray=mysql_fetch_array($result))
{
print("<option
value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option
>\n");
}
print("</select>");
}
编程题:
1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如:http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答案
第一种:
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(".",$file);
return $ext[1];
}
第二种 pathinfo();
2. 在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个
标准的 meta 语句
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的
charset 部分值改为 big5
请注意:
1. 需要处理完整的 html 页面,即不光此 meta 语句
2. 忽略大小写
3.' 和 " 在此处是可以互换的
4.'Content-Type' 两侧的引号是可以忽略的,但 'text/html;charset=gbk' 两侧的不
行
5. 注意处理多余空格
header('content-type:text/html;charset=big5');
3. 写一个函数,算出两个文件的相对路径
如 $a='/a/b/c/d/e.php';
$b='/a/b/12/34/c.php';
cd../../c/d/e.php
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d 将()添上
答:
<?php
$a = '/a/b/c/d/e/f/g.php';
$b = '/a/b/12/34/a/d/c/c.php';
function getRelativePath($a,$b){
$returnPath = array(dirname($b));
$arrA = explode('/', $a);
$arrB = explode('/', $returnPath[0]);
for ($n = 1, $len = count($arrB); $n < $len; $n++) {
if ($arrA[$n] != $arrB[$n]) {
break;
}
}
if ($len - $n > 0) {
$returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));
}
$returnPath = array_merge($returnPath, array_slice($arrA, $n));
$str=dirname(implode('/',array_slice($returnPath,1)));
return $str;
}
echo getRelativePath($a,$b);
填空题:
1. 在 PHP 中 , 当 前 脚 本 的 名 称 ( 不 包 括 路 径 和 查 询 字 符 串 ) 记 录 在 预 定 义 变 量
__$_SERVER['script_filename']__中 ;而链 接到 当前页面 的 URL 记录在预定 义 变量
__$_SERVER['HTTP_REFERER']__
2.执行程序段<?phpecho8%(-2)?>将输出__0__。
3.在 HTTP1.0 中,状态码 401 的含义是如果返回“找不到文件”的提示,则可用 header
函数,其语句为__404__。
4. 数 组 函 数 arsort 的 作 用 是 __ 对 数 组 进 行 逆 向 排 序 并 保 持 索 引 关 系 __; 语 句
error_reporting(2047)的作用是__报告所有错误和警告__。
6.写出一个正则表达式,过虑网页上的所有 JS/VBS 脚本(即把 scrīpt 标记及其内容都去掉):
Preg_replace(“/<script >.*<\/script>/ig”,””,$script);
7.以 Apache 模块的方式安装 PHP,在文件 http.conf 中首先要用语句____动态装载 PHP
模块,然后再用语句____使得 Apache 把所有扩展名为 php 的文件都作为 PHP 脚本处理。
LoadModulephp5_module"c:/php/php5apache2.dll"
AddTypeapplication/x-httpd-php.php,
8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;
为了避免多次包含同一文件,可以用语句__require_once||include_once__来代替它们。
9.对象的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函
数是___serialize _和__ unserialize__.
10.一个函数的参数不能是对变量的引用,除非在 php.ini 中把.
allow_call_time_pass_reference = off
11.SQL 中 LEFTJOIN 的含义是__自然左外链接__。如果 tbl_user 记录了学生的姓名(name)
和学号(ID),tbl_score 记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)
和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成
绩,则可以用 SQL 语句__
12.在 PHP 中,heredoc 是一种特殊的字符串,它的结束标志必须__<<<__。
编程题:
13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
答:
function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != ".." && $file != "." ) {
if ( is_dir($dir . "/" . $file) ) {
$files[$file] = my_scandir($dir . "/" . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
一.把数组中的值加一
1.$arr=array(1,2,3);
foreach($arr as &$val){
$val=2;
}
2.$arr=array(1,2,3);
foreach($arr as $key=>$val){
$arr[$key]=$val+1;
}
二.函数中echo和return的区别:
$a=10;
$b=20;
function show($a,$b){
echo $a+$b;
return $a+$b;
}
echo "$a+$b=".show($a,$b);
三.验证邮箱格式
$str="jia@qq.com";
echo preg_match('/\w+@\w+\.\w+/',$str);
四.复习ajax
五.字符串翻转
$str='abcdef';
$str2='';
for($i=strlen($str)-1;$i>=0;$i--){
$str2.=$str{$i};
}
echo $str2;
六.mysql中获取当前时间以及日期格式化函数:
1.now();
2.date_format();
七.在 HTTP 1.0 中,状态码401的含义是什么?;如果返回“找不到文件”的提示,则可用header 函数,其语句为(?)
401:未被授权
返回找不到文件:header("HTTP/1.0 404 File Not Found");
八:用函数控制报错级别
error_reporting(E_ALL);
九:两个地址的相对路径:
$a='/a/b/c/d/e.php';
$b='/a/b/12/34/c.php';
$arr1=explode('/',$a);
array_shift($arr1);
$arr2=explode('/',$b);
array_shift($arr2);
for($i=0;$i<count($arr1);$i++){
if($arr1[$i]!=$arr2[$i]){:x
$pos=$i;
break;
}
}
$length=count($arr2)-1-$pos;
$str1=str_repeat('../',$length);
$str2=join('/',array_slice($arr1,$pos));
echo $str1.$str2;
25
27
匹配js标签
php面试题10(复习)的更多相关文章
- 剑指offer编程题Java实现——面试题10二进制中1的个数
题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变 ...
- 【剑指offer】面试题 10. 斐波那契数列
面试题 10. 斐波那契数列 题目一:求斐波那契数列的第n项 题目描述:求斐波拉契数列的第n项 写出一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项.斐波拉契数列定义如下: C++ 实现 ...
- 剑指offer——面试题10:斐波那契数列
个人答案: #include"iostream" #include"stdio.h" #include"string.h" using na ...
- Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组
Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 思路 这道题,两个数组原本就有序.于是我们采用双指针 ...
- Java的Exception和Error面试题10问10答
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...
- 2018年底,IOS面试题的复习之OC的反射机制
明天要去面试一个公司,今天复习下IOS题目吧 1.说一下OC的反射机制 答:OC的反射机制类似于JAVA的反射机制,这种动态反射机制可以让OC语言更加灵活.这句话是对反射机制的初步认识,具体表现在哪里 ...
- 剑指offer--面试题10
题目:求整数二进制表示中1的个数. 分析:此题直接考查二进制表示与位运算!!! 正数和负数的二进制表示不同!在计算机中,正数的二进制表示即为通常所写的二进制:而负数的二进制表示则用补码表示,即原码的反 ...
- P78、面试题10:二进制中1的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把9表示成二进制1001,有2位是1.因此如果输入9,该函数输出2. 相关题目: 1)用一条语句判断一个整数是不是2的整数次方.一 ...
- 剑指Offer面试题10(Java版):二进制中的1的个数
题目:请实现一个函数,输入一个整数.输出该数二进制表示中1的个数. 比如把9表示成二进制是1001,有2位是1.因此假设输入9.该函数输出2. 1.可能引起死循环的解法 这是一道非常主要的考察二进制和 ...
随机推荐
- js04---object1
我们目前为止大多数引用类型都是Object类型的实例,Object也是ECMAScript中使用最多的一种类型(就像java.lang.Object一样,Object类型是所有它的实例的基础).Obj ...
- XML Pull
java [android]xml new parse tool XML parsing with XML Pull import org.xmlpull.v1.XmlPullParser;
- JAVA MessageDigest(MD5加密等)
转自http://blog.csdn.net/hudashi/article/details/8394158 一.概述 java.security.MessageDigest类用于为应用程序提供信息摘 ...
- 原生js大总结三
021.定义函数的几种方式 1.关键字函数:function fnName(){}; 2.字面量函数:var fn = function(){}; 3.构造函数:var fn = new ...
- Android开发之搜芽项目的图片载入问题(使用Volley进行网络图片载入)
搜芽的移动开发这几天进度相对来说很的快. 可是美中不足的就是网络图片的载入问题. 我有两套方案: 1)沿用迅雷动漫的图片载入.迅雷动漫也是用的一个开源的库.可是不知道是我使用出了问题还是真的是它的问题 ...
- WP8日历(含农历)APP
WP8日历(含农历)APP WP8日历(含农历)APP UI XAML(部分) <phone:PhoneApplicationPage xmlns:CustomControl="clr ...
- Swiper+ ejs模板引擎+ iScroll插件知识总结
一. Swiper swiper是一个应用于移动端的动画插件,原理类似于轮播图 官网 http://www.swiper.com.cn/# html结构 <div class="swi ...
- 【MemSQL Start[c]UP 3.0 - Round 1 A】 Declined Finalists
[链接]h在这里写链接 [题意] 在这里写题意 [题解] max(最大值-25,0) [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h> ...
- 【AtCoder Beginner Contest 074 C】Sugar Water
[链接]h在这里写链接 [题意] 让你在杯子里加糖或加水. (4种操作类型) 糖或水之间有一定关系. 糖和水的总量也有限制. 问你糖水浓度的最大时,糖和糖水的量. [题解] 写个dfs就好. 每次有4 ...
- Spring Boot 热部署(转)
Spring Boot 热部署 实际开发中,修改某个页面数据或逻辑功能都需要重启应用.这无形中降低了开发效率,所以使用热部署是十分必要的. 什么是热部署? 应用启动后会把编译好的Class文件加载的虚 ...