经典面试题(一)

1.正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER['REMOOT_ADDR'];  或者 getenv('REMOOT_ADDR');
  服务器端的IP:gethostbyname('www.baidu.com');

2.假设a.html和b.html在同一个文件夹下面,用javascript实现当打开a.html五秒钟后,自动跳转到b.html。
function go2b(){
window.location = “b.html”;
window.close();
}
setTimeout( “go2b()”,5000 ); //5秒钟后自动执行go2b()

3.查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2
  * $_SERVER["QUERY_STRING"]  获取当前URL?后面的值
 $_SERVER["SCRIPT_NAME"]   获取当前脚本的路径,如:index.php
 $_SERVER["PHP_SELF"]      当前正在执行脚本的文件名

 方法一:$require=$_SERVER['QUERY_STRING'];
 方法二:$info=parse_url($url);$require=$info['query'];

4.当前运行脚本所在的文档根目录:d:inetpubwwwroot
  echo $_SERVER['DOCUMENT_ROOT'];

5.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
 function _scandir($dir){
  $files=array();
  if(is_dir($dir)){
   if($handle=opendir($dir)){
    while(($file=readdir($handle))!==false){  //注意!此处必须为全不等于
     $file_path=$dir.'/'.$file;
     if($file!='.' && $file!='..'){   //防止读取父级目录
      if(is_dir($file_path)){
      $files[$file]=_scandir($file_path);
      }else{
       $files[]=$file_path;
      }
     }
    }
    closedir($handle);
    return $files;
   }
  }
 }
 $dir='d:/www/test/sa';
 var_dump(_scandir($dir));
 *windows中的文件编码是gbk格式的,打开会显示乱码,问题未解决


6、把 John 新增到 users 阵列?
 solve 1:$users[]='join';
 solve 2:array_push($user,'join');


7、在PHP中error_reporting这个函数有什么作用?
答:error_reporting() 设置 PHP 的报错级别并返回当前级别。

8、如何修改SESSION的生存时间(1分)
 一:在php.ini 中设置 session.gc_maxlifetime = 1440 //默认时间
 二:代码实现
 $lifeTime = 24 * 3600;  // 保存一天
 session_set_cookie_params($lifeTime); //设置会话 cookie 生命周期参数 ,本函数仅在当前脚本执行过程中有效。 因此,如果要通过函数修改 cookie 参数,需要对每个请求都要 在调用 session_start()  函数之前调用 session_set_cookie_params()  函数。
 session_start();

9、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?($1分)
 $concent=file_get_contents($url);

10、请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)

答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

按引用传递则不需要复制值,对于性能提高很有好处。

10、写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
 *** strstr — 查找字符串的首次出现 ,返回该位置之前的字符串
     strrchr — 查找指定字符在字符串中的最后一次出现,返回该位置之后的字符串
  strpos — 查找字符串首次出现的位置 ,返回该位置指针
  strrpos — 查找字符串最后一次出现的位置 ,返回该位置指针

 metho1: $url=" http://www.sina.com.cn/abc/de/fg.php?id=1";
   $info=parse_url($url);//解析出路径path和参数query
   $path=$info['path'];//返回:$path=http://www.sina.com.cn/abc/de/fg.php
   $ext=strrchr($path,'.');//返回:$ext=.php
   $ext=ltrim($ext,'.');//去掉左边的点
   echo $ext;
 metho2: $url=" http://www.sina.com.cn/abc/de/fg.php?id=1";
   $info=parse_url($url);
   $path=$info['path'];
   $file=basename($path);////显示带有文件扩展名的文件名
   $fileinfo=pathinfo($file);
   $ext=$fileinfo['extension'];
   echo $ext;

11、使用五种以上方式获取一个文件的扩展名
 $file="dir/upload.image.jpg";
 function get_ext1($file){
  $info=pathinfo($file);
  return $info['extension'];
 }
 function get_ext2($file){
  $arr=explode('.',$file);
  return end($arr);//end()获取数组最后一个元素,current()获取当前元素
 }
 function get_ext3($file){
  return substr(strrchr($file,'.'),1);
 }
 function get_ext4($file){
  return substr($file,strrpos($file,'.')+1); 
 }
 function get_ext5($file){
  return pathinfo($file,PATHINFO_EXTENSION); 
 }
 //
 echo get_ext5($file);

12、MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?
 varchar是变长,节省存储空间,进行数据提取前必须先查找长度,效率相对低一些。
 char是固定长度,可能浪费资源,但效率高。

13、请描述出两点以上XHTML和HTML最显著的区别
 (1)XHTML必须强制指定文档类型DocType,HTML不需要
 (2)XHTML所有标签必须闭合,HTML比较随意

14、写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)
 MyISAM、InnoDB、BDB

15、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
 echo (strtotime($date2)-strtotime($date2))/60/60/24

16、请写一个函数,实现以下功能:”make_by_id” 转换成 ”MakeById”。
 $str="make_by_id";
 method1:
   $arr=explode('_',$str);
   foreach ($arr as $k=>$v) {
    $arr[$k]=ucfirst($v);
   }
   echo implode($arr);
 method2:
   $str=str_replace('_',' ',$str);
   echo str_replace(' ','',ucwords($str));
17、js中网页前进和后退的代码
 history.go(1)    history.gp(-1)
18、&$a 表示引用传递
19、 php class中static,public,private,protected的区别?
 static 静态,类名可以访问
 public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。

20、 HTTP协议中GET、POST和HEAD的区别?
 HEAD: 只请求页面的首部。
 GET: 请求指定的页面信息,并返回实体主体。
 POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
 (1)HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。
 (2)在FORM提交的时候,如果不指定Method,则默认为GET请 求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为 该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
 GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
 (3)GET 这个是浏览器用语向服务器请求最常用的方法。POST这个方法也是用来传送数据的,但是与GET不同的是,使用POST的时候,数据不是附在URI后面传递的,而是要做为独立的行来传递,此时还必须要发送一个Content_length标题,以标明数据长度,随后一个空白行,然后就是实际传送的数据。网页的表单通常是用POST来传送的。

 

   

posted @ 2017-10-24 22:05  yolo_bean  阅读(636)  评论(0编辑  收藏  举报