贡献11道php面试题及解决方法,跟大家总结一下曾经遇到的部分面试题。希望可以给大家得到帮助。
1、 什么事面向对象?主要特征是什么?
面象对象是把自然界的物体和概念直接映射到程序界的一种比较优雅的手段
主要特征:继承、封装、多态
2、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?($1分)
答:方法1(对于PHP5及更高版本):
$readcontents = fopen("http://www.phpres.com/index.html", "rb");
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents("http://www.phpres.com/index.html");
3、使用五种以上方式获取一个文件的扩展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)
<?php
function get_ext1($file_name){
return strrchr($file_name, '.');
}
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, '.'));
}
function get_ext3($file_name){
return array_pop(explode('.', $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));
} ?>
4 、写出以下程序的输出结果
<?php
$str=“cd”;
$$str=“hotdog”;
$$str.=“ok”;
echo $cd;
?>
答案:hotdogok
5 、给你三个数,写程序求出其最大值。
<?php
$var1=1;
$var2=7;
$var3=8;
$max=$var1>$var2?$var1:$var2;
$max=$max>$var3?$max:$var3;
echo $max;
?>
6 、foo() 与 @foo() 有什么分别?
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。
7 、写一个删除指定目录及目录里文件的函数。
<?php
header("content-type:text/html;charset=gbk");
/**
*删除指定目录()删除子目录和文件
*@path 文件目录路径 string
*@return void
*/
function removepath($path){
//1:判断删除目录是否存在
if(!file_exists($path)){
return false;
}
//2:将目录内容全部获取出
$list = scandir($path);
//3:遍历目录
foreach($list as $f){
//4:将 . .. 排除在外
if($f != '.' && $f != '..'){
//5:如果内容文件 unlink
if(is_file($path."/".$f)){
unlink($path.".".$f);
}else{
//6:目录 递归
removepath($path."/".$f);
}
}
}//foreach end
//7:循环外删除目录!!
rmdir($path);
} ?>
8 、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
<?php
header('content-type:text/html;charset=gbk');
/*
* 遍历一个指定目录()包括子目录和文件
* @param string $path 指定目录名称
* @return viod
*/
class dir{
function upl($path){
//判断处理的目录是否存在 不存在 return false;
if(!file_exists($path)){
return false;
}
//列出当前目录内容
$list=scandir($path);
foreach($list as $f){
//去除 . ..
if($f!='.'&&$f!='..'){
//判断是否是一个目录【$path.'/'.$f】
if(is_dir($path."/".$f)){
//输出
echo $path."/".$f."<br />";
//递归调用自己
$this->upl($path."/".$f);
}else{
//如果文件存在输出
echo $path."/".$f."<br />";
}
}//if end }//foreach end
}
}
$a=new dir();
$a->upl("D:/www/fenghuo/application"); ?>
9 、将下列字符串中大写字母转小写,小字母转转大写后输出。$str = "0198abIcA37";
<?php
$str = "0198abIcA37";
$temp = ""; //1:循环所有字符获取
$size = strlen($str);
for($i = 0;$i < $size;$i++){
if($str{$i} >= 'a' && $str{$i} <= 'z'){
//小写
$temp .= strtoupper($str{$i});
}else if($str{$i} >= 'A' && $str{$i} <= 'Z'){
//大写
$temp .= strtolower($str{$i});
}else{
//数字
$temp .= $str{$i};
}
}//for echo "原有字符串 {$str}<br />";
echo "转换后字符串 {$temp}<br />";
?>
10 、有个数组,请把数组里面的数进行排序。
$array = array(1,35,-90,110,9879,-1256,908);
<?php
//冒泡排序(数组排序)
function bubble_sort($array)
{
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j--){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
} ?>
11、正则表达式
1.用php基本函数及正则,将以下字符串中出现的所有手机号码,中间4位全部替换’****’,然后再打印出来,如:13712345678转变为137****5678再进行打印
以下是本期炒股大赛中奖用户:
李先生:13712123434
杨小姐:15956568787
张先生:0571-66778899
王先生:15068115269
请以上中奖用户尽快联系客服专线:0571-88912222-112
2.写一个通用的正则表达式,可以匹配下面任何一个字符串
1)010-87885266
2)0571-85607788
3)057185607788
答:1.
<?php
$str = "";
$str="以下是本期炒股大赛中奖用户 李先生:13712123434 杨小姐:15956568787张先生0571-45454645";
$pat="/[^\d-]+/";
$arr=preg_split($pat,$str);
for($i=1;$i<count($arr);$i++){
if(!preg_match("/-/",$arr[$i])){
$str=substr_replace($arr[$i],'****',3,4);
}else{
$str=substr_replace($arr[$i],'****',5,4);
}
echo $str.'|';
} ?>
答:2.
<?php $str="010-87885266";
$str="0571-85607788";
$str="057185607788";
$rs=preg_match("/^(0\d{2,3})(-)?\d{8}/",$str);
if($rs){
echo '匹配成功';
}
?>
11道php面试题的更多相关文章
-
[ZZ]知名互联网公司Python的16道经典面试题及答案
知名互联网公司Python的16道经典面试题及答案 https://mp.weixin.qq.com/s/To0kYQk6ivYL1Lr8aGlEUw 知名互联网公司Python的16道经典面试题及答 ...
-
MySql_34道经典Sql试题
MySql_34道经典Sql试题 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xiaouncle/article/details/799390 ...
-
【笔试题】精选30道Java笔试题解答
转自于:精选30道Java笔试题解答 精选30道Java笔试题解答 1. 下面哪些是Thread类的方法() A. start() B. run() C. exit() D. getPriority( ...
-
精选30道Java笔试题附答案分析
精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑 ...
-
面试百度、阿里、腾讯,这134道Java面试题你会多少?
这里一共是134道Java面试题,看看你能对几道吧! 1. Java 语言有哪些特点 2. 面向对象和面向过程的区别 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 4. Oracle JD ...
-
解析“60k”大佬的19道C#面试题(下)
解析"60k"大佬的19道C#面试题(下) 在上篇中,我解析了前 10 道题目,本篇我将尝试解析后面剩下的所有题目. 姐妹篇:解析"60k"大佬的19道C#面试 ...
-
Python 30道高频面试题及详细解答
开学啦,开学啦!周末坐地铁的时候看到很多同学推着行李箱,拎着大包小包的穿梭在人群中,哎新的一学期又开始啦,同时也意味着很多同学要准备毕业啦,尤其是准大四,准研三的同学. 今年的招聘行情并不乐观,小公司 ...
-
「剑指offer」27道Mybatis面试题含解析
1.什么是Mybatis? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建连接.创建statement等繁杂 ...
-
你应该知道的25道Javascript面试题
题目来自 25 Essential JavaScript Interview Questions.闲来无事,正好切一下. 一 What is a potential pitfall with usin ...
随机推荐
-
IAR FOR ARM的安装及破解
本博文主要是介绍如何安装以及破解IAR FOR ARM . 1.下载IAR FOR ARM以及注册机 IAR FOR ARM下载:http://pan.baidu.com/s/1i5t1qF7 注册机 ...
-
web server与app server有什么不同
简单来说,web服务器提供页面给浏览器,而app服务器提供客户端可以调用的接口.具体而言,我们可以说: Web服务器处理HTTP请求,而app服务器基于多种不同的协议,处理应用程序的逻辑问题. 以下将 ...
-
Gym 100531H Problem H. Hiking in the Hills 二分
Problem H. Hiking in the Hills 题目连接: http://codeforces.com/gym/100531/attachments Description Helen ...
-
&ldquo;System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&rdquo; 的解决方案
在项目部署过程中ORACLE客户端多次会遇"System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&qu ...
-
【学习笔记】【C语言】逗号运算符
逗号运算符主要用于连接表达式,例如: int a = 9; int b = 10; a = a+1 , b = 3*4; * 用逗号运算符连接起来的表达式称为逗号表达式,它的一般形式为: 表达式1, ...
-
HTTP协议中的长连接和短连接(keep-alive状态)
什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待在同 ...
-
MPAndroidChart 的实现
效果图: 代码实现: package com.jiahao.me; import java.util.ArrayList; import java.util.List; import android. ...
-
Java第一次写的流布局图形界面,留个纪念
package jisuanqi; import java.awt.*; public class MyFrame extends Frame{ //继承Frame类 public MyFrame() ...
-
JavaFX 简单3D演示样例
从Java8開始,在JavaFX中便添加了3D部分的内容,包含Camera,Material,Light,Shape3D等基础内容. 当然,JavaFX 3D应该是OpenJFX里眼下正在补充和完好的 ...
-
计算机学院大学生程序设计竞赛(2015’12) 1009 The Magic Tower
#include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using ...