字体:  

据说是新浪php工程师的面试题,大家来试试!!(这是编程部分)

kukukyky 发表于: 2008-9-13 17:31 来源: PHPChina 开源社区门户

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.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。

最新回复

dzhope at 2008-9-13 17:58:08
是新浪的笔试题
dzhope at 2008-9-13 17:58:24
好像总共5页,考的很全面
于安 at 2008-9-13 18:08:26
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php  

第一个容易..
小星 at 2008-9-13 18:13:29
1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php


写得不好,期待各位大大的代码。

[ 本帖最后由 小星 于 2008-9-13 18:16 编辑 ]
kukukyky at 2008-9-13 18:27:58
kukukyky at 2008-9-13 18:28:29
laruence at 2008-9-13 21:10:06
呵呵,新浪的题,水平还不错, 我简单说说吧:
(不保证代码的完全正确性,我只是随便一写,说明思路)

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. 注意处理多余空格
     这个也容易,就是文件和字符串操作,读入文件,替换,写入
     fopen->fread->preg_replace->fwirte->fclose
3. 写一个函数,算出两个文件的相对路径
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
  这个题有点意思,我想了下:
<?php
  function getRelativePath($path_a, $path_b){
      //取得path_a相对于path_b的相对路径
          //主要思想就是判断俩个路径最左边的相同的最长部分,然后拼凑相对路径
          //细节上,需要调整,比如临界点的slash(/)
          $tmp_a = explode('/', $path_a);
      $tmp_b = explode('/', $path_b);
          $index = 0;
      for($i=1, $len=count($tmp_a); $i < $len; $i++){
                         if(strcmp($tmp_a[$i], $tmp_b[$i])){
                                break;
                        }
                        $index++;
          }
          $relative_path = '';
          for($i = $index, $len = count($tmp_a); $i<$len; $i++){
                  $relative_path .= '../';
          }
          for($i = $index, $len = count($tmp_b); $i<$len; $i++){
                  $relative_path .= '../'.$tmp_b[$i]
          }
          return $relative_path;
  }
?>
4.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
   <?php
         function listDir($path){
                         $dir = opendir($path);
                         while($node = readdir($dir)){
                                if(in_array($node, array(".", ".."))){
                                        continue; //忽略.和..
                                }
                                if(is_file($node)){
                                        echo $node;
                                }
                                if(is_dir($node)){
                                        listDir(realpath($path.$node));
                                }
                         }
                 }
        ?>
5.简述论坛中无限分类的实现原理。
        这个简单不说了
6.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。
        window.open? 这部分用js实现,主要是要用到window.opener, 之类的引用

[ 本帖最后由 laruence 于 2008-9-13 21:13 编辑 ]
onlyou at 2008-9-13 22:25:14
第一题
action2001 at 2008-9-13 22:40:03
第三题... 汗一个先

[ 本帖最后由 action2001 于 2008-9-16 13:03 编辑 ]
小星 at 2008-9-13 22:56:50


后缀不是3位你程序的结果就出错了
willko at 2008-9-14 00:16:38
第三题。。




第四题就太常见了。。。

[ 本帖最后由 willko 于 2008-9-14 00:23 编辑 ]
willko at 2008-9-14 00:27:52

QUOTE:

原帖由 laruence 于 2008-9-13 21:10 发表
呵呵,新浪的题,水平还不错, 我简单说说吧:
(不保证代码的完全正确性,我只是随便一写,说明思路)

1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de ...
第3题运行了,结果不正确啊。。

第4题,我不太认同这样用,,PHP5有scandir
ljxok2001 at 2008-9-14 17:56:39
默默 at 2008-9-14 18:54:01
第一题:

默默 at 2008-9-14 19:16:11
第三题



[ 本帖最后由 默默 于 2008-9-14 19:17 编辑 ]
kukat at 2008-9-14 19:25:37

QUOTE:

原帖由 默默 于 2008-9-14 18:54 发表
第一题:


$url = 'http://www.sina.com.cn/aa/bb/cc/dd.a?ee=ff';
function getExt($url){
$parse_url = parse_url($url);
$path = $parse_url['path'];
$pos = strrpos($path,'.');
return !$path | ...
既然用parse_url,不如用pathinfo
默默 at 2008-9-14 19:32:49

QUOTE:

原帖由 kukat 于 2008-9-14 19:25 发表


既然用parse_url,不如用pathinfo
扩展名后面不止会有"?" ,还可能会出现"#" ,用parse_url的话#后面的部分会被忽略,而pathinfo不会,那样需要多加一个判断

[ 本帖最后由 默默 于 2008-9-14 19:34 编辑 ]
kukat at 2008-9-14 19:41:24

QUOTE:

原帖由 默默 于 2008-9-14 19:32 发表

扩展名后面不止会有"?" ,还可能会出现"#" ,用parse_url的话#后面的部分会被忽略,而pathinfo不会,那样需要多加一个判断
呵呵,不好意思,忘记还有锚点了
kukukyky at 2008-9-14 20:02:18
默默 at 2008-9-14 20:09:04
第二题: