PHP 面试题及答案

workman

贡献于2012-02-26

字数:20953 关键词: 面试题目 试题 PHP

 PHP面试含答案 做为程序员,到IT企业面试的时候肯定会有笔试这关,那就要考考你的PHP知识了,所以本站收集一些实用的php面试题及答案给大家。 基础题: 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. 2.session与cookie的区别? 答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。 两者都可通过时间来设置时间长短 3.数据库中的事务是什么? 答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成, 事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。 简述题: 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) 答:echo date('Y-m-d H:i:s', strtotime('-1 days')); 2、echo(),print(),print_r()的区别(3分) 答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串 3、能够使HTML和PHP分离开使用的模板(1分) 答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate 5、使用哪些工具进行版本控制?(1分) 答:cvs,svn,vss; 6、如何实现字符串翻转?(3分) 答:echo strrev($a); 7、优化MYSQL数据库的方法。(4分,多写多得) 答: 1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM 2、使用连接(JOIN)来代替子查询: a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid WHERE orderinfo.customerid IS NULL 3、使用联合(UNION)来代替手动创建的临时表 a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2` 4、事务处理: a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败 mysql_query("BEGIN"); mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')"; mysql_query("SELECT * FROM `orderinfo` where customerid=".$id"); mysql_query("COMMIT"); 5、锁定表,优化事务处理: a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。 包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前, 不会有其它的访问来对 inventory 进行插入、更新或者删除的操作 mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE"); mysql_query("SELECT customerid FROM `customerinfo` where id=".$id); mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id); mysql_query("UNLOCK TABLES"); 6、使用外键,优化锁定表 a.把customerinfo里的customerid映射到orderinfo里的customerid, 任何一条没有合法的customerid的记录不会写到orderinfo里 CREATE TABLE customerinfo ( customerid INT NOT NULL, PRIMARY KEY(customerid) )TYPE = INNODB; CREATE TABLE orderinfo ( orderid INT NOT NULL, customerid INT NOT NULL, PRIMARY KEY(customerid,orderid), FOREIGN KEY (customerid) REFERENCES customerinfo (customerid) ON DELETE CASCADE )TYPE = INNODB; 注意:'ON DELETE CASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order 表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB; 7、建立索引: a.格式: (普通索引)-> 创建:CREATE INDEX <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段) 创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段)) (唯一索引)-> 创建:CREATE UNIQUE <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段) 创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段)) (主键)-> 它是唯一索引,一般在创建表是建立,格式为: CREATA TABLE tablename ([...],PRIMARY KEY[索引字段]) 8、优化查询语句 a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作 例子1: SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢) SELECT * FROM order WHERE orderDate<"2008-01-01";(快) 例子2: SELECT * FROM order WHERE addtime/7<24;(慢) SELECT * FROM order WHERE addtime<24*7;(快) 例子3: SELECT * FROM order WHERE title like "%good%"; SELECT * FROM order WHERE title>="good" and name<"good"; 8、PHP的意思(送1分) 答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页 9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分) 答:now(),date() 10、实现中文字串截取无乱码的方法。(3分) 答:function GBsubstr($string, $start, $length) { if(strlen($string)>$length){ $str=null; $len=$start+$length; for($i=$start;$i<$len;$i++){ if(ord(substr($string,$i,1))>0xa0){ $str.=substr($string,$i,2); $i++; }else{ $str.=substr($string,$i,1); } } return $str.'...'; }else{ return $string; } } 11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分) 12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分) 答:用过,smarty 13、请简单阐述您最得意的开发之作(4分) 答:信息分类 14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分) 答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表, 程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量 15、用PHP写出显示客户端IP与服务器IP的代码1分) 答:打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR'); 打印服务器IP:echo gethostbyname("www.bolaiwu.com") 16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分) 答:require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require include->include有返回值,而require没有(可能因为如此require的速度比include快) 注意:包含文件不存在或者语法错误的时候require是致命的,include不是 17、如何修改SESSION的生存时间(1分). 答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache 方法2:$savePath = "./session_save_dir/"; $lifeTime = 小时 * 秒; session_save_path($savePath); session_set_cookie_params($lifeTime); session_start(); 方法3:setcookie() and session_set_cookie_params($lifeTime); 18、有一个网页地址, 比如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"); 19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分) 答:状态401代表未被授权,header("Location:www.xxx.php"); 12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分) 答:heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串 例子: $str = << 23、foo()和@foo()之间有什么区别?(1分) 答:@foo()控制错误输出 24、如何声明一个名为”myclass”的没有方法和属性的类? (1分) 答:class myclass{ } 25、如何实例化一个名为”myclass”的对象?(1分) 答:new myclass() 26、你如何访问和设置一个类的属性? (2分) 答:$object = new myclass(); $newstr = $object->test; $object->test = "info"; 27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分) 答:mysql_fetch_row是从结果集取出1行数组,作为枚举 mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得 28、GD库是做什么用的? (1分) 答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。 29、指出一些在PHP输入一段HTML代码的办法。(1分) 答:echo "aaa"; 30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分) (a) fget() (b) file_open() (c) fopen() (d) open_file() [ c ] 31、下面哪个选项没有将 john 添加到users 数组中? (1分)   (a) $users[] = ‘john’;   (b) array_add($users,’john’);   (c) array_push($users,‘john’);   (d) $users ||= ‘john’; [ a , c ] 32、下面的程序会输入是否?(1分)   $num = 10;   function multiply(){   $num = $num * 10;   }   multiply();   echo $num;   ?> 输出:10 33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)   表名User   Name Tel Content Date   张三 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); $result = mysql_query("SELECT * FROM `user` WHERE name='张三'"); while($rs = mysql_fetch_array($result)){ echo $rs["tel"].$rs["content"].$rs["date"]; } 34、如何使用下面的类,并解释下面什么意思?(3)   class test{ function Get_test($num){    $num=md5(md5($num)."En");    return $num;    }   } 答:$testnum = "123"; $object = new test(); $encrypt = $object->Get_test($testnum); echo $encrypt; 类test里面包含Get_test方法,实例化类调用方法多字符串加密 35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)   表名User   Name Tel Content Date   张三 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='张四'"); 36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分) 答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串 char的场地固定为创建表设置的长度,varchar为可变长度的字符 38、写出以下程序的输出结果 (1分)   $b=201;   $c=40; $a=$b>$c?4:5;   echo $a;   ?> 答:4 39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分) 答:isset($str),empty($str); 40、取得查询结果集总数的函数是?(1分) 答:mysql_num_rows($result); 41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分) 答:echo $array[0]; 42、请将41题的数组的值用','号分隔并合并成字串输出(1分) 答:for($i=0;$i\n"); while($rowArray=mysql_fetch_array($result)) { print("\n"); } print(""); } 编程题: 1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名 例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php 答案1: function getExt($url){ $arr = parse_url($url); $file = basename($arr['path']); $ext = explode(".",$file); return $ext[1]; } 答案2: function getExt($url) { $url = basename($url); $pos1 = strpos($url,"."); $pos2 = strpos($url,"?"); if(strstr($url,"?")){ return substr($url,$pos1 + 1,$pos2 - $pos1 - 1); } else { return substr($url,$pos1); } } 2. 在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句   请使用 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将()添上 答: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)); return implode('/', $returnPath); } echo getRelativePath($a, $b); 填空题: 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量__$_SERVER['PHP_SELF']__中;而链接到当前页面的URL记录在预定义变量__$_SERVER['HTTP_REFERER']__ 中 2.执行程序段将输出__0__。 3.在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则可用 header 函数,其语句为____。 4.数组函数 arsort 的作用是__对数组进行逆向排序并保持索引关系__;语句 error_reporting(2047)的作用是__报告所有错误和警告__。 5.PEAR中的数据库连接字符串格式是____。 6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrīpt标记及其内容都去掉):preg_replace("/].*?>.*?/si", "newinfo", $script); 7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 LoadModule php5_module "c:/php/php5apache2.dll" , AddType application/x-httpd-php .php, 8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句__require_once||include_once__来代替它们。 9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是____。 10.一个函数的参数不能是对变量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__设为on. 11.SQL中LEFT JOIN的含义是__自然左外链接__。如果 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] = scandir($dir . "/" . $file); }else { $files[] = $file; } } } closedir($handle); return $files; } } 14.简述论坛中无限分类的实现原理。 答: query( $sql ); while ($rows = $DB->fetch_array($result)) { $category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows [categoryName]); } if (!isset($category_array[$category_id])) { return ""; } foreach($category_array[$category_id] AS $key => $category) { if ($category['id'] == $default_category) { echo "\n"; } else { echo ">" . $category['name'] . "\n"; } Get_Category($key, $level + 1, $default_category); } unset($category_array[$category_id]); } /* 函数返回的数组格式如下所示: Array ( [1] => Array ( [id] => 1 [name] => 一级类别 [level] => 0 [ParentID] => 0 ) [4] => Array ( [id] => 4 [name] => 二级类别 [level] => 1 [ParentID] => 1 ) [9] => Array ( [id] => 9 [name] => 哈哈 [level] => 2 [ParentID] => 4 ) [3] => Array ( [id] => 3 [name] => 二级类别 [level] => 1 [ParentID] => 1 ) [8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 ) [2] => Array ( [id] => 2 [name] => 二级类别 [level] => 1 [ParentID] => 1 ) [7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 ) [6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 ) [5] => Array ( [id] => 5 [name] => 三级类别 [level] => 2 [ParentID] => 2 ) [10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 ) ) */ //指定分类id,然后返回数组 function Category_array($category_id = 0,$level=0) { global $DB; $sql = "SELECT * FROM category ORDER BY categoryID DESC"; $result = $DB->query($sql); while ($rows = $DB->fetch_array($result)) { $category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows; } foreach ($category_array AS $key=>$val) { if ($key == $category_id) { foreach ($val AS $k=> $v) { $options[$k] = array( 'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID'] ); $children = Category_array($k, $level+1); if (count($children) > 0) { $options = $options + $children; } } } } unset($category_array[$category_id]); return $options; } ?> array( '1' => array('id' => 1, 'parent' => 0, 'name' => '1111'), '2' => array('id' => 2, 'parent' => 0, 'name' => '2222'), '4' => array('id' => 4, 'parent' => 0, 'name' => '4444') ), '1' => array( '3' => array('id' => 3, 'parent' => 1, 'name' => '333333'), '5' => array('id' => 5, 'parent' => 1, 'name' => '555555') ), '3' => array( '6' => array('id' => 6, 'parent' => 3, 'name' => '66666'), '7' => array('id' => 7, 'parent' => 3, 'name' => '77777') ), '4' => array( '8' => array('id' => 8, 'parent' => 4, 'name' => '8888'), '9' => array('id' => 9, 'parent' => 4, 'name' => '9999') ) ); if (!isset($arr[$category_id])) { return ""; } foreach($arr[$category_id] AS $key => $cate) { if ($cate['id'] == $default_category) { $txt = "\n"; }else{ $txt1 = ">" . $cate['name'] . "\n"; } $val = $txt.$txt1; echo $val; self::Get_Category($key, $level + 1, $default_category); } } function getFlush($category_id = 0,$level = 0, $default_category = 0) { ob_start(); self::Get_Category($category_id ,$level, $default_category); $out = ob_get_contents(); ob_end_clean(); return $out; } } $id =$_GET['id']; echo ""; ?> [面试] 百度Web前端开发(西安)二面纠结贴 Web前端, 西安, 二面, 等通知   看了很多说这个职位二面之后回等的,刚刚从西安的皇后大酒店走出来,厕所的风吹过来都感觉神清气爽的~   总的来说感觉还是不错,一面技术面,面试官很年轻看起来经验不是非常丰富的样子,问的问题也很基本都是Web前端常见题:   1.自我介绍;   2.描述一下项目职责、项目闪光点;   3.介绍下js的优缺点;   4.用过哪些前端框架,描述一下;(Prototype、Dojo等)   5.介绍下Dojo的动态加载机制,你用Dojo最多的是哪些部分;   6.项目中遇到过哪些困难,咋解决的;   7.对本次招聘有什么意见或建议;   8.等等,其他的记不清了。   其实面试官提出的问题一般都是依据你的简历,或者你在介绍某一个部分的时候所提及的一些东西。(例如我提到Dojo的动态加载)所以各位童鞋在面试之前一定要好好审视一下自己的简历并且初步设想一下面试官可能会提哪些问题,准备下回答策略,在对一些基本的问题(例如使用过哪些框架)的答案先根据自己的情况、特长设计一下,这样就能在面试中掌握主动权。   二面RP面试,自我感觉个人RP还不错吧~聊了一个半小时,总共两次面试两个钟头四十分钟,感觉比较顺手,结束之后面试官让回等。   问题就在于此,貌似很多Web前端开发都是回等的,目前13号笔试的那帮兄弟有接到三面通知的么?或者根本就没有回等这一说而只是婉拒?如果有的话,大概多久能收到中面通知? 转载请注明出自应届生求职招聘论坛 http://bbs.yingjiesheng.com/,本贴地址:http://bbs.yingjiesheng.com/thread-252769-1-1.html http://topic.csdn.net/t/20061122/20/5177943.html 4.session和cache的区别是什么   5.如果有几千个session,怎么提高效率 session是个人全局变量     cache和Application是全站全局变量,.NET的cache并非全在内存中,可能被动态规划在硬盘中。     几千个session,怎么提高效率,可以依靠Cookies     几千个session并不多,关键看session里面装了些什么,session里面只存储用户索引id就可以了。存几万个int也无所谓。 将全站的session内容做个统计         将所有相关的部分,规划成对象,然后在session里储存实例。         这样可以有效的减少session数量,提高使用和维护效率。  http://www.itpub.net/thread-762311-1-1.html http://www.blogjava.net/itspy/archive/2006/11/10/80435.aspx 百度Web开发工程师面试题【一】 编写一个方法 去掉一个数组的重复元素 博客去除字符串的前后空格 YUI中用的正则表达式的方法 稍微修改一下: 百度Web开发工程师面试题【三】 跟上次的去除重复字符的做法基本一样,区别只是这次把每个字符和字符的出现次数作为类的两个属性。然后把这些类放在数组里面。 1、请实现两棵树是否相等的比较,相等返回,否则返回其他值,并说明算法复杂度。 数据结构为: typedef struct_TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild; }TreeNode; 函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2); 注:A、B两棵树相等当且仅当Root->c==RootB-->c,而且A和B的左右子树相等或者左右互换相等。 2、写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。 函数接口为:int find_orderk(const int* narry,const int n,const int k) 2'、已知一个字串由GBK汉字和ansi编码的数字字母混合组成,编写c语言函数实现从中去掉所有ansi编码的字母和数字(包括大小写),要求在原字串上返回结果。 函数接口为:int filter_ansi(char* gbk_string) 注:汉字的GBK编码范围是0x8140-0xFEFE 百度笔试题(感谢网友lihan提供) 1)此题10分 对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。如:18!=6402373705728000,尾部连续0的个数是3。 (不用考虑数值超出计算机整数界限的问题) 2)此题10分 编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url 如下形式叫做首页: militia.info/ www.apcnc.com.cn/ http://www.cyjzs.comwww.greena888.com/ www.800cool.net/ http://hgh-products.my-age.net/ 如下形式叫做目录页: thursdaythree.net/greenhouses--gas-global-green-house-warming/ http://www.mw.net.tw/user/tgk5ar1r/profile/ http://www.szeasy.com/food/yszt/chunjie/ www.fuckingjapanese.com/Reality/ 请注意: a) url有可能带http头也有可能不带 b)动态url(即含有"?"的url)的一律不算目录页,如: www.buddhismcity.net/utility/mailit.php?l=/activity/details/3135/ www.buddhismcity.net/utility/mailit.php?l=/activity/details/2449/ 另:如果你会linux,请用linux下的grep命令实现第2题的功能(附加5分)。 3)如果必须从网页中区分出一部分"重要网页"(例如在10亿中选8亿),比其他网页更值得展现给用户,请提出一种方案。 4 )假设有10亿网页已经被我们存下来,并提供如下信息:网页全文(即网页的源码)、全文长度、网页正文(即网页中提取的主体文字)、 正文长度,以及其他网页提取物等,现在希望去掉其中的重复网页,请提出可行的方案,计算出每个网页对应的重复度,你可以自己 对网页重复下定义,也可以提出需要哪些更多的网页提取物来实现更好的去重复方案本文出自 51CTO.COM技术博客

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ]
9 人已下载

下载文档

相关文档