笔试题 – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Mon, 08 Jun 2026 13:02:00 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 9月中旬大约两周左右时间的面试题汇总! https://www.shuijingwanwq.com/2014/09/26/331/ https://www.shuijingwanwq.com/2014/09/26/331/#respond Fri, 26 Sep 2014 03:29:34 +0000 http://www.shuijingwanwq.com/?p=331 浏览量: 76

1、echo()、print()、print_r()的区别?
echo()是语言结构,无返回值
print()功能与echo()基本相同,也是语言结构,不同的是print有返回值,且总是返回1
print_r是递归打印,用于输出数组对象

2、表单中get与post提交方法的区别?
GET方法是form表单提交数据的默认方法,它通过URL请求来传递用户的数据。GET方法传输的数据量非常小,一般限制在2KB左右,但是其执行效率比POST方法要高。由于使用GET方法传输的数据对用户是透明的,因此可能会带来一定的安全问题。POST方法通过HTTP POST机制,将表单内的数据放置在HTML表头(header)内传递给服务器端。与GET方法不同,POST方法传递的数据对用户是不可见的,而且POST方法传递的数据量也是比较大的。

3、session与cookie的区别是什么?
cookie是保存在客户端的,session是保存在服务端的,而session id是保存在客户端的。

4、数据库中事务是什么?
一个操作单元,在这个单元中的所有操作要么都执行,要么都失败。如果所有操作成功,事务则提交(commit)。即使一个操作失败,事务也将回滚(roll back),所有被影响的数据将恢复到之前的状态。

5、如何实现字符串翻转?

 <?php
 $a = ‘abcde’;
 $b = ”;
 for ($i=strlen($a)-1;$i>=0;$i–) {
 $b .= $a{$i};
 }
 // 或者
 $c = strrev($a);
 ?>

6、优化mysql数据库的方法?
优化查询,如使用索引、用连接查询代替子查询
优化数据库结构,如分表、增加中间表、增加冗余字段、分析表、检查表、优化表
优化插入记录的速度,如插入记录前先禁用索引、一个insert语句插入多条记录
优化mysql服务器硬件配置,如增加内存、磁盘数量、提高磁盘读写速度
优化mysql服务器参数配置

7、请说明php中传值与传引用的区别,什么时候传值,什么时候传引用?
传值:变量默认总是传值赋值。当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。
传引用:改动新的变量将影响到原始变量,反之亦然。
传值时,必须复制值,对于大型的字符串和对象来说,有一定的性能损耗,而传引用不需要复制值,对于性能提高有一定好处

8、mysql_fetch_row与mysql_fetch_array有什么区别?
mysql_fetch_row()从结果集中取得一行作为枚举数组
mysql_fetch_array()从结果集中取得一行作为关联数组,或数字数组,或二者兼有

9、请写出数据类型(int char varchar datetime text)的意思;请问char和varchar有什么区别
int 数字类型,char 固定长度的字符串,varchar 可变长度的字符串,datetime 日期/时间类型,日期和时间的组合,text 文本字符串
char的长度固定为创建表时声明的长度,当保存char值时,在它们的右边填充空格以达到指定的长度。varchar为可变长字符串,varchar值保存时不进行填充。

10、请写出php5权限控制修饰符
public 公有 protected 保护 private 私有

11、请写出php5的构造函数和析构函数
__construct  __destruct

12、求$a、$b、$c三个数中的最大值与最小值

 <?php
 $a = 3;
 $b = 44;
 $c = 40;
 echo max($a,$b,$c);
 echo min($a,$b,$c);
 ?>

13、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来
表名user
name tel content date
张三 13333663366  大专毕业 2006-10-11
张三 13612312331  大专毕业 2006-10-15
张四 021-55665566 大专毕业 2006-10-15
请根据上面的题目完成代码:

<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "my_db"); /* check connection */ if ($mysqli->connect_errno) {
    echo("Connect failed: ", $mysqli->connect_error);
    exit();
}
 
$query = "SELECT * FROM user WHERE name='张三'";
 
if ($result = $mysqli->query($query)) {
 
    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
    echo $row['name'].' ';
    echo $row['tel'].' ';
    echo $row['content'].' ';
    echo $row['date']. '
’;
    }
 
    /* free result set */
    $result->free();
}
 
/* close connection */
$mysqli->close();
?>

14、如何使用下面的类,并解释下面是什么意思?

<?php class test { function Get_test($num) { $num = md5(md5($num)."En"); return $num; } } $test = new test(); $num = 1; $test->Get_test($num);
?>
 

15、写出SQL语句的格式:插入、更新、删除
表名User
Name Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
(b) 请用sql语句把张三的时间更新成为当前系统时间
(c) 请写出删除名为张四的全部记录
(a)
INSERT INTO User(‘Name’,’Tel’,’Content’,’Date’) VALUES(‘小王’,’13254748547′,’高中毕业’,’2007-05-06′)
(b)
UPDATE User SET Date=DATE_FORMAT(NOW(),’%Y-%m-%d’) WHERE Name=’张三’
(c)
DELETE FROM User WHERE Name=’张四’

16、写出以下程序的输出结果

 <?php
 $b = 201;
 $c = 40;
 $a = $b>$c?4:5;
 echo $a;
 ?>


4

17、防止SQL注入可以用哪些函数?
intval()、htmlspecialchars()

18、php的垃圾回收机制是怎样的?
在php中,没有任何变量指向这个对象时,这个对象就成为垃圾。php会将其在内存中销毁,这是php的GC垃圾处理机制,防止内存溢出。

19、你用什么方法检查php脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?

<?php
$begin = microtime(true); //获取程序执行开始的时间
// some code here 待执行的代码
$stop = microtime(true); //获取程序执行结束的时间
echo $begin;
echo '
';
echo $stop;
list($m0, $s0) = explode(" ", $begin);
list($m1, $s1) = explode(" ", $stop);
$runtime = ($s1 + $m1 - $s0 - $m0) * 1000;
echo '
当前脚本执行时间:' . $runtime . '微秒';
?>



explain

20、请举例说明在你的开发过程中用什么方法来加快页面的加载速度?
后端:
生成静态html
生成xml
使用加速软件,如zend
前端:
js、css、图片的压缩、合并

21、对于大流量的网站,你采用什么样的方法来解决访问量的问题?
1、使用流量分析统计软件;
2、确认服务器硬件是否足够支持当前的流量;
3、优化数据库访问;
4、禁止外部的盗链;
5、控制大文件的下载;
6、使用不同主机分流主要流量;
7、squid[反向代理],最好的选择;
8、增加带宽;

22、请写出面向对象的三个特性?
封装 继承 多态

23、请谈一谈MVC
MVC的目标是将业务逻辑从用户界面的考虑中分离。在MVC中,模型(model)代表信息(数据)和业务规则;视图(view)包含了用户界面元素,例如文本、表单等;控制器(controller)则管理模型和视图中的通信。

24、是否使用过设计模式,请列举出来?
工厂模式 单元素模式 观察者模式 命令链模式 策略模式

25、书写冒泡排序算法

<?php
$arr = array(45,56,67,32,33,23,37,455,223,223,23);
for ($i=1;$i<count($arr);$i++) { for ($j=count($arr)-1;$j>=$i;$j–) {
        if ($arr[$j]<$arr[$j-1]) { $temp = $arr[$j-1]; $arr[$j-1] = $arr[$j]; $arr[$j] = $temp; } } } 
?>

26、写一个函数,尽可能高效的,从一个标准的url取出文件的扩展名

<?php 
$url = 'http://www.sina.com.cn/abc/de/fg.php?id=1'; 
function getext($url) { 
//解析url,返回其组成部分,返回值为一数组 
$arr = parse_url($url); 
//print_r($arr); 
$file = basename($arr['path']); 
$ext = explode(".", $file); 
return $ext[1]; 
} 
echo getext($url); 
?>
 



27、sort()、asort()、和ksort()有什么区别?它们分别在什么情况下使用?
sort() 对数组排序,当本函数结束时数组单元将被从最低到最高重新安排
asort() 对数组进行排序,并保持索引关系
ksort() 对数组按照键名排序

28、以下的代码输出是什么?为什么?
<?php
$num = 10;
function multiply() {
$num = $num * 10;
}
multiply();
echo $num;
?>
因为function中的$num未定义,且其作用域是在函数内

29、执行程序段<?php echo 8%(-2) ?>将输出什么
0

30、reference跟一个正规的变量有什么区别?如何pass by reference?在什么情况下我们需要这样做?
reference传送的是变量的地址而非它的值
<?php
$var = ‘aad’;
//myfunction(&$var); //pass by reference
?>
以reference传送参数给函数,可以使函数改变了的变量,即使在函数结束后仍然保留新值

31、foo()与@foo()有什么区别?
foo()在发生错误时,会显示错误信息
@foo()在发生错误时,会隐藏错误信息

32、分别解释“===”与“==”
==判断值是否相等
===判断值是否相等,且要求类型一致

33、include与include_once有什么区别?require又如何?
include_once 如果文件已经被包含过,则不会再次包含
require_once 如果文件已经被包含过,则不会再次包含
<?php
define(‘__ROOT__’, dirname(dirname(__FILE__)));
//require_once(__ROOT__.’/1.php’);
//require_once(__ROOT__.’/1.php’);
?>

34、redir()、herder()、location()、redirect()中哪一个函数可以反浏览器转向到另一个页面?
header()

35、fget()、file_open()、fopen()、open_file()中哪一个函数可以用来开启档案以便读/写?
fopen()

36、你如何利用php解决http的无状态本质?
session cookie

37、GD函数库用来做什么?
处理图片

38、一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on?
allow_call_time_pass_reference

39、写一个函数,尽可能高效的,遍历文件夹‘home’中的所有子文件夹,并返回子文件夹名称的数组
<?php
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;
}
}
}
}
return $files;
}
$result = my_scandir(‘E:\php\home’);
print_r($result);
?>

40、打印出昨天的此刻的时间,格式:“年-月-日 时:分:秒”
<?php
echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’,time()));
?>

41、HTTP协议中几个状态码的含义:503,500,401,200,301,302
503 请求超时
500 内部服务错误,一般是php程序导致
401 未授权访问
200 正确响应
301 永久重定向
302 临时重定向

42、实现函数,把字符串“action_test”转换成ActionTest、“my_book”转换成“MyBook”
<?php
$a = ‘action_test’;
$b = str_replace(‘_’,’ ‘,$a);
$c = ucwords($b);
$d = str_replace(‘ ‘,”,$c);
echo $d;
?>

43、php5中魔术方法有哪些,请举例说明各自的用法?
__sleep 序列化
__wakeup 反序列化
__toString 打印一个对象时被调用
__invoke 当尝试以调用一个函数的方式调用一个对象的时候,其会被自动调用
__set_state
__construct 构造方法
__destruct 析构方法
__call 当调用类中不存在的方法时自动调用
__get 当调用类中不存在或者访问级别受限的属性时自动调用
__set 当对类中不存在或者访问级别受限的属性赋值时自动调用
__isset 当对类中不存在或者访问级别受限的属性使用isset函数时自动调用
__unset 当对类中不存在或者访问级别受限的属性使用unset函数时自动调用
__clone 克隆对象时被自动调用
__autoload 实例化一个类时,如果其对应的类不存在,则自动调用

44、php通过什么函数可以重置php.ini中的配置
ini_set()

45、写出mysql两种以上存储引擎名称,并简述其区别?
MyISAM是mysql的默认存储引擎,支持全文索引,但不是事务安全的,不支持外键
InnoDB不支持全文索引,是事务安全的

46、列举开源的一些数据库
mysql memcached MariaDB PostgreSQL

47、列举一些常用的php扩展,如GD
mysql mysqli pdo sockets zip openssl xmlrpc

48、请将“2014-2-17 00:00:00”转换为unix时间戳(格林威治时间到当前时间的秒数),将1392612299格式化为年月日格式
<?php
echo strtotime(‘2014-2-17 00:00:00′).'<br />’;
echo date(‘Ymd’,1392612299);
?>

49、请用php求2014-2-17至2008-8-8相差的天数?
<?php
$startdate = strtotime(‘2014-2-17’);
$enddate = mktime(‘0′,’0′,’0′,’8′,’8′,’2008’);
echo round(($startdate-$enddate)/3600/24);
?>

50、请将$aa=’12,32,11,11’转换为数组array(12,32,11,11),并将其还原成$aa=’12,32,11,11’的代码;
<?php
$aa = ‘12,32,11,11’;
$aa_array = explode(‘,’,’12,32,11,11′);
print_r($aa_array);
$bb = implode(‘,’,$aa_array);
echo $bb;
?>

51、
<?php
$b = 13;
6 + $a = $b;
echo(abs($a));
?>
13

52、
<?php
echo 1+2+”a+4+5″;
?>
3

53、
<?php
echo 1+2+”3+a+5″;
?>
6

54、
<?php
echo 1+2+”1+1+2″;
?>
4

55、显示结果:
<?php
$a = 12;
$b = 012;
$c = 0*12;
echo $a,”\n”,$b,”\n”,$c;
?>
12 10 0

56、输出为Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0时,可能的输出语句是:
<?php
echo $_SERVER[‘HTTP_USER_AGENT’];
?>

57、以下说法不正确的是:D
A.PHP有四种标量类型:布尔型(boolean),整型(integer),浮点型(float),字符串(string)
B.浮点型(float)与双精度型(double)是同一种类型
C.符合类型包括:数组(array),对象(object),资源(resource)
D.伪类型:混合型(mixed),数字型(number),回调(callback)

58、执行下面的代码后,
<?php
echo function_exists(‘print’);
?>
得到的输出是:空

59、下面不是PHP语法的组成部分的函数是:A
A.array 它是一个数据结构不是常规函数
B.eval eval()函数把字符串按照PHP代码来计算。
C.each 返回数组中当前的键/值对并将数组指针向前移动一步
D.list list–把数组中的值赋给一些变量

60、下面对于echo,print的描述正确的是:C
A.echo,print都可以打印多个参数
B.print可以打印多个参数,echo不可以
C.echo可以打印多个参数,print不可以
D.echo,print都不可以打印多个参数

61、下面代码的输出正确的是:C
<?php
$a = array(1=>5,5=>8,22,2=>’8′,81);
echo $a[7];
echo $a[6];
echo $a[3];
?>
A.空2281
B.空8122
C.8122空
D.空空空

62、下面代码的输出结果:D
<?php
$a[bar] = ‘hello’;
echo $a[bar];
//注:如果没有加引号,php可以把常量自动转为字符串,但是效率会降低,大约8倍左右
echo $a[‘bar’];
?>
A.hello
B.空空
C.报错
D.hellohello

63、执行下面的代码的结果是什么?A
<?php
$bool = TRUE;
echo gettype($bool);
echo is_string($bool);
?>
A.boolean
B.boolean0
C.booleanFALSE
D.booleanfalse
注:gettype获取变量类型;is_string检测变量是否是字符串

64、写出下面代码的结果:C
<?php
echo 1>>0;
echo 2>>1;
echo 3<<2;
//注:左移一位*2,右移除2
?>
A.012
B.106
C.1112
D.123

65、下面代码的执行结果:A
<?php
for($i=0;$i<10;$i++){
//注:第二个参数少$,所以不是变量是常量,常量转化成字符串在转化成数字为0,0<10,所以一直循环下去
print $i;
}
?>
A.0123456789
B.012345678910
C.无输出
D.死循环

66、对于正面的代码
<?php
$fruits = array(‘strawberry’=>’red’,’banana’=>’yellow’);
?>
能够正确得到结果’yellow’的代码是:ACD
<?php
echo “A banana is {$fruits[‘banana’]}”;
//考点:双引号里嵌入变量,大括号起限定范围的作用
//echo “A banana is $fruits[‘banana’]”;
echo “A banana is {$fruits[banana]}”;
//类型转化,所以慢,但是是正确的
echo “A banana is $fruits[banana]”;
//双引号里的变量到特殊符号停止,【不属于特殊符号,所以会继续向下读取
?>

67、C
<?php
$foo = ‘test’;
$bar = <<< EOT
$foo bar
EOT;
echo $bar;
?>
上面的语句输出结果:
A.$foo bar;
B.’EOT’ $foo bar EOT;
C.test bar;
D.’EOT’ test bar EOT

68、A
<?php
$a = 3;
$b = 4;
if($a||$b=5){
echo ‘todo’;
}
?>
$b的值是():
A.4;
$a=3;3是布尔型真所以就不往后执行,所以$b还是4
B.5;
C.3;
D.false

69、preg_replace与preg_replace_callback的区别是什么?
preg_replace 执行一个正则表达式的搜索与替换
preg_replace_callback 执行一个正则表达式的搜索并且使用一个回调进行替换

70、如何使用css显示/隐藏一个dom元素,如果有多种,请指出它们的区别?
display:block;
display:none;

71、请写出常用的清除浮动的方法
在需要清除浮动的父级元素内部的所有浮动元素后添加一个内容为空的标签来清除浮动,.clear{clear:both;}
overflow:auto;zoom:1;
:after

72、若div分别使用以下样式会具有什么特性 display:inline;display:block;display:inline-block;
display:inline;此元素会被显示为内联元素,元素前后没有换行符
display:block;此元素会被显示为块级元素,元素前后带有换行符
display:inline-block;行内块元素

73、IE6双倍margin的bug是如何出现的,可以怎样解决?
float,margin
display:inline;

74、已知一个div样式,width:100px;height:100px;margin:50px 20px;padding:50px 20px;这个div的实际高度是多少?
200px

75、一个已知宽高的容器,如何使它在页面中左右居中、上下居中?
text-align:center;vertical:middle;

76、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20(用正则)
<script>
var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;
reg.test(“aeu3_di876”);
</script>

77、请指出IE与FF脚本兼容性问题的现象与解决方法
(1)window.event;
表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象
(2)获取事件源
IE用srcElement获取事件源,FF用target获取事件源
(3)添加、去除事件
IE:element.attach(“onclick”,function);element.detach(“onclick”,function);
FF:element.addEventListener(“onclick”,function,true);element.removeEventListener(“onclick”,function,true);
(4)获取标签的自定义属性
IE:div.value、div[“value”]
FF:div.getAttribute[“value”]
(5)document.getElementByName()和document.all[name]
IE:均不能获取元素
FF:可以
(6)input.type的属性
IE:只读
FF:可读写
(7)innerText textContent outerHTML
IE:支持innerText outerHTML
FF:支持textContent

78、javascript中面向对象中继承实现
<script>
function Animal(name){
this.name = name;
}
Animal.prototype.getName = function(){
alert(this.name)
}
function Dog(){};
Dog.prototype = new Animal(“Buddy”);
Dog.prototype.constructor = Dog;
var dog = new Dog();
</script>

79、编写一个方法,去掉一个数组的重复元素
<script>
var arr = [1,1,2,3,3,2,1];
Array.prototype.unique = function(){
var ret = [];
var o = {};
var len = this.length;
for (var i=0;i<len;i++){
var v = this[i];
if (!o[v]){
o[v] = 1;
ret.push(v);
}
}
return ret;
};
//alert(arr.unique());
</script>

80、JavaScript中如何检测一个变量是一个String类型?请写出函数实现
<script>
//String类型有两种生成方式
//var str = “hello world”;
var str2 = new String(“hello world”);
function IsString(str){
return (typeof str == “string” || str.constructor == String);
}
var str = “”;
//alert(IsString(1));
//alert(IsString(str2));
</script>

81、补充代码,鼠标单击Button1后将Button1移动到Button2的后面
<div>
<input type=”button” id=”button1″ value=”1″ onclick=”moveBtn(this);” />
<input type=”button” id=”button2″ value=”2″ />
</div>
<script>
function moveBtn(obj) {
var clone = obj.cloneNode(true);
var parent = obj.parentNode;
parent.appendChild(clone);
parent.removeChild(obj);
}
</script>

82、下面css标签在JavaScript中调用应如何拼写,border-left-color,-moz-viewport
borderLeftColor
mozViewport

83、请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象
<script>
function parseQueryString(url){
var params = {};
var arr = url.split(“?”);
if (arr.length <= 1) return params;
arr = arr[1].split(“&”);
for(var i=0,l=arr.length; i<l; i++){
var a = arr[i].split(“=”);
params[a[0]] = a[1];
}
return params;
}
var url = “http://witmax.cn/index.php?key0=0&key1=1&key2=2”;
var ps = parseQueryString(url);
//alert(ps[“key2”]);
</script>

]]>
https://www.shuijingwanwq.com/2014/09/26/331/feed/ 0
4月初大约两周左右时间的面试题汇总! https://www.shuijingwanwq.com/2014/04/21/236/ https://www.shuijingwanwq.com/2014/04/21/236/#respond Mon, 21 Apr 2014 12:29:12 +0000 http://www.shuijingwanwq.com/?p=236 浏览量: 222

1、echo()、print()、print_r()的区别
echo()是语言结构,无返回值
print()功能与echo()基本相同,也是语言结构,不同的是print有返回值,且总是返回1
print_r是递归打印,用于输出数组对象
2、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?
发生异常时,include产生警告,require产生致命错误
include_once()/require_once()
3、如何修改SESSION的生存时间
// 保存一天
$lifetime = 24 * 3600;
session_set_cookie_params($lifetime);
session_start();
4、写出发帖数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)
SELECT name FROM members ORDER BY posts,id DESC limit 0,10
5、请说明php中传值与传引用的区别。什么时候传值,什么时候传引用?
传值:变量默认总是传值赋值。当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。
传引用:改动新的变量将影响到原始变量,反之亦然。
传值时,必须复制值,对于大型的字符串和对象来说,有一定的性能损耗,而传引用不需要复制值,对于性能提高有一定好处
6、在php中error_reporting这个函数有什么作用?
设置脚本运行时的错误报告级别
7、请写一个函数验证电子邮件的格式是否正确
preg_match(“/^(?:w+.?)*w+@(?:w+.?)*w+$/”,$email);
8、js表单弹出对话框函数是?获得输入焦点函数是?
alert()、prompt()、confirm()
focus()
9、js的转向函数是?怎么引入一个外部js文件?
window.location.href
<srcipt type=”text/javascript” src=”*.js”></srcipt>
10、请使用jquery获得下列文档中的class为gb2的元素
$(‘.gb2’)
11、mysql_fetch_row()和mysql_fetch_array()之间有什么区别?
mysql_fetch_row()从结果集中取得一行作为枚举数组
mysql_fetch_array()从结果集中取得一行作为关联数组,或数字数组,或二者兼有
12、下面哪个函数可以打开一个文件,以对文件进行读和写操作?
(a)fget()
(b)file_open()
(c)fopen()
(d)open_file()
(c)
13、下面哪个选项没有将john添加到users数组中?
(a)$users[] = ‘john’;
(b)array_add($users,’john’);
(c)array_push($users,’john’);
(d)$users ||= ‘john’;
(b)、(d)皆是没有添加到的
14、下面的程序会输出多少?
<?php
$num = 10;
function multiply() {
$num = $num * 10;
}
multiply();
echo $num;
?>
10
15、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来
表名User
Name Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 大专毕业 2006-10-15
张四 021-55665566 大专毕业 2006-10-15
请根据上面的题目完成代码:
<?php
$mysql_db = mysql_connect(“localhost”,”root”,”pass”);
@mysql_select_db(“DB”,$mysql_db);
$sql = “SELECT Name,Tel,Content,Date FROM User WHERE Name=’张三'”;
$result = mysql_query($sql);
if ($row = mysql_fetch_array($result)) {
echo $row[‘Name’].$row[‘Tel’].$row[‘Content’].$row[‘Date’];
}
?>
16、如何使用下面的类,并解释下面是什么意思?
<?php
class test {
function Get_test($num) {
$num = md5(md5($num).”En”);
return $num;
}
}
$test = new test();
$num = 1;
$test->Get_test($num);
?>

17、写出SQL语句的格式:插入、更新、删除
表名User
Name Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
(b) 请用sql语句把张三的时间更新成为当前系统时间
(c) 请写出删除名为张四的全部记录
(a)
INSERT INTO User(‘Name’,’Tel’,’Content’,’Date’) VALUES(‘小王’,’13254748547′,’高中毕业’,’2007-05-06′)
(b)
UPDATE User SET Date=DATE_FORMAT(NOW(),’%Y-%m-%d’) WHERE Name=’张三’
(c)
DELETE FROM User WHERE Name=’张四’
18、请写出数据类型(int char varchar datetime text)的意思;请问char和varchar有什么区别
int 数字类型,char 固定长度的字符串,varchar 可变长度的字符串,datetime 日期/时间类型,日期和时间的组合,text 文本字符串
char的长度固定为创建表时声明的长度,当保存char值时,在它们的右边填充空格以达到指定的长度。varchar为可变长字符串,varchar值保存时不进行填充。
19、MySQL自增类型(通常为表ID字段)必须将其设为(?)字段
primary key
20、写出以下程序的输出结果
<?php
$b = 201;
$c = 40;
$a = $b>$c?4:5;
echo $a;
?>
4
21、检测一个变量是否有设置的函数是?是否为空的函数是?
isset()
empty()
22、取得查询结果集总数的函数是?
mysql_num_rows($result);
23、$arr = array(‘james’,’tom’,’symfony’);
(1)请打印出第一个元素的值
(2)请将数组的值用’,’分隔并合并成字串输出
(1)
<?php
$arr = array(‘james’,’tom’,’symfony’);
echo $arr[0];
?>
(2)
<?php
$arr = array(‘james’,’tom’,’symfony’);
echo implode(‘,’,$arr);
?>
24、$a = ‘abcdef’;请取出$a的值并打印出第一个字母
<?php
$a = ‘abcdef’;
echo $a{0};
?>
25、请写出php5权限控制修饰符
public(公有)protected(保护)private(私有)
26、请写出php5的构造函数和析构函数
_construct
_destruct
27、您是否用过版本控制软件?如果有您用的版本控制软件的名字是?
用过,如SVN、Git等
28、您是否用过模板引擎?如果有您用是模板引擎的名字是?
用过,如Smarty、Ease Template等
29、对于大流量的网站,您采用什么样的方法来解决访问量问题?
1、使用流量分析统计软件;
2、确认服务器硬件是否足够支持当前的流量;
3、优化数据库访问;
4、禁止外部的盗链;
5、控制大文件的下载;
6、使用不同主机分流主要流量;
30、谈谈对MVC的认识?
MVC的目标是将业务逻辑从用户界面的考虑中分离。在MVC中,模型(model)代表信息(数据)和业务规则;视图(view)包含了用户界面元素,例如文本、表单等;控制器(controller)则管理模型和视图中的通信。
31、您是否用过eclipse作为php开发IDE?如果有请说出至少三个debug的快捷键及对应功能
32、写一个函数,尽可能高效的,遍历文件夹‘home’中的所有子文件夹,并返回子文件夹名称的数组
<?php
/**
* 遍历目录,结果存入数组,支持php4及以上,php5以后可用scandir()函数代替while循环
* @param string $dir
* @return array
*/

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;
}
}

function my_scandir1($dir){
$files = array();
$dir_list = scandir($dir);
foreach ($dir_list as $file) {
if ($file != “..” && $file != “.”) {
if (is_dir($dir . “/” . $file)) {
$files[$file] = my_scandir1($dir . “/” . $file);
} else {
$files[] = $file;
}
}
}
return $files;
}

$result = my_scandir(‘E:\php\home’);
// $result1 = my_scandir1(‘E:\php\home’);
print_r($result);
?>
33、详细描述如下代码片段的意义(注:无法达到预期,这是原始代码)
<?php
$text = ‘快来加入我们的 !企业 社会化讨论组吧’;
// preg_replace(‘/(^|[\s\.\,\:\;]+)!([A-Za-z0-9\x80-\xff]{1,64})/e’,”‘\\1!’.common_link($id, ‘\\2’)”, $text);
?>
执行一个正则表达式的搜索和替换,将$text中的标点符号去除掉
34、按要求编写代码
(1)声明一个Cat对象,该对象有一个公共属性:name;两个行为:walk(),talk()
(2)声明一个MyCat对象,继承Cat对象
(3)MyCat有一个公共属性:color
(4)实例化一个MyCat对象,并将color属性赋值为’blank’
(5)执行MyCat的talk方法,打印出当前MyCat对象的color属性值
<?php
// (1)
class Cat {
public $name;
function walk() {
}
function talk() {
}
}
// (2)(3)
class MyCat extends Cat {
public $color;
}
// (4)(5)
$mycat = new MyCat();
$mycat->color = ‘black’;
$mycat->talk();
print($mycat->color);
?>
1、BOM是什么,有哪些危害?
BOM(Byte Order Mark)是UTF编码方案里用于标识编码的标准标记
由于BOM的存在,php会误认为文本内容已经输出,因此会对页面渲染造成影响
2、如果前端工程师所编写的html网页编码为gb2312,而数据库与php文件编码为UTF-8,则如何快速解决此问题?
快速解决:php文件要输出头:header(“Content-type:text/html;charset=gb2312”),且php文件本身编码需要转为gb2312
mysql_query(“SET NAMES GBK”);
彻底解决:将html网页转换为utf-8,全部统一为utf-8
3、<!– 将[img]http://www.leshisz.com/themes/default/images/index/ad/ad-stay-tuned.png[/img]替换为<img alt=”敬请期待” src=”http://www.leshisz.com/themes/default/images/index/ad/ad-stay-tuned.png” height=”288″ width=”500″></img>,UBB代码 –>
<?php
$str = ‘[img]http://www.leshisz.com/themes/default/images/index/ad/ad-stay-tuned.png[/img]’;
//<img alt=”敬请期待” src=”http://www.leshisz.com/themes/default/images/index/ad/ad-stay-tuned.png” height=”288″ width=”500″></img>
$img = str_replace(‘

[img]’, ‘<img alt=”敬请期待” src=”‘, $str);
$img = str_replace(‘[/img]

‘, ‘” height=”288″ width=”500″></img>’, $img);
echo $img;
?>
4、mysql性能检测,在SQL语句前加上什么?
如果在SELECT语句前放上关键词EXPLAIN,MySQL将解释它如何处理SELECT,提供有关表如何联接的次序。
5、不同的用户有可能具有相同的IP,需要统计出不同的IP数量,且按照降序排列
表名User
id Name Tel Ip Date
1 张三 13333663366 01.33.22.33 2006-10-11
2 张三 13612312331 03.22.33.33 2006-10-15
3 张四 021-55665566 01.33.22.33 2006-10-15
SELECT count(ip) AS count FROM user GROUP BY id ORDER BY count DESC
6、打印出当前表单的$_POST与$_GET
<form method=”post” action=”2.php?s=1&a=2″>
<input type=”hidden” name=”var[]” value=”aa”>
<input type=”hidden” name=”var[]” value=”bb”>
<input type=”checkbox” name=”checkbox” value=”cc”>
<input type=”submit” name=”submit” value=”submit”>
</form>
$_POST = array (
var => Array (
0 => ‘aa’,
1 => ‘bb’
)
submit => ‘submit’
)
$_GET = array (
s => 1,
a => 2
)
(一)基础题
1、写出该程序在浏览器中输出结果:
<?php
$str1=null;
$str2=false;
echo $str1==$str2?’相等’:’不相等’;
$str3=”;
$str4=0;
echo $str3==$str4?’相等’:’不相等’;
$str5=0;
$str6=’0′;
echo $str5===$str6?’相等’:’不相等’;
?>
相等 相等 不相等
2、写出该程序在浏览器中输出结果:
<?php
$a1=null;
$a2=false;
$a3=0;
$a4=”;
$a5=’0′;
$a6=’null’;
$a7=array();
$a8=array(array());
echo empty($a1)?’true’:’false’;echo'</br>’;
echo empty($a2)?’true’:’false’;echo'</br>’;
echo empty($a3)?’true’:’false’;echo'</br>’;
echo empty($a4)?’true’:’false’;echo'</br>’;
echo empty($a5)?’true’:’false’;echo'</br>’;
echo empty($a6)?’true’:’false’;echo'</br>’;
echo empty($a7)?’true’:’false’;echo'</br>’;
echo empty($a8)?’true’:’false’;
?>
true
true
true
true
true
false
true
false
3、写出该程序在浏览器中输出结果:
<?php
$str=”a”;
$$str=”net”;
$$str.=”work”;
$b=&$a;
unset($b);
$b=”hello wolrd”;
echo $a;
echo “</br>”;
echo $b;
?>
network
hello wolrd
4、写出该程序在浏览器中输出结果:
<?php
$a=99;
$b=100;
$c=10;
++$a>$b–?$c++:$c+=$b;
echo $a.”</br>”.$b.”</br>”.$c;
?>
100
99
109
5、用php打印出前一天的时间格式是2004-4-8 11:11:11
<?php
print_r(date(‘Y-n-j H:i:s’),strtotime(‘-1 day’));
?>
6、用php写出显示客户端IP与服务器IP的代码
<?php
echo $_SERVER[‘REMOTE_ADDR’];
echo $_SERVER[‘SERVER_ADDR’];
?>
7、请列举几种php页面传值的方法
GET POST COOKIE
8、不用新变量直接交换现有两个变量的值
<?php
$a = 1;
$b = 2;
// 把数组中的值赋给一些变量
list($b, $a) = array($a, $b);
?>
10、列举几种常用php框架
Yii,thinkphp,Zend Framework,CakePHP
(二)算法及程序题
1、如何实现字符串翻转
<?php
$a = ‘abcde’;
$b = ”;
for ($i=strlen($a)-1;$i>=0;$i–) {
$b .= $a{$i};
}
// 或者
$c = strrev($a);
?>
2、书写冒泡排序算法
<?php
$arr = array(45,56,67,32,33,23,37,455,223,223,23);
for ($i=1;$i<count($arr);$i++) {
for ($j=count($arr)-1;$j>=$i;$j–) {
if ($arr[$j]<$arr[$j-1]) {
$temp = $arr[$j-1];
$arr[$j-1] = $arr[$j];
$arr[$j] = $temp;
}
}
}
?>
4、有一表menu(parent,clildren,url),请用递归法写出一树形菜单,将所有的menu列出来


<?php
// parent为null,表示无父级,为一级菜单,clildren为其本身ID
$menu = array(
0 => array(null,1,url1),
1 => array(null,2,url2),
2 => array(1,3,url3),
3 => array(1,4,url4),
4 => array(2,5,url5),
5 => array(1,6,url6),
6 => array(4,7,url7),
7 => array(5,8,url8)
);
function menu($menu) {
    $menu1 = array();
    $menu2 = array();
    // 一级菜单
    foreach ($menu as $k => $v) {
        if ($v[0] == null) {
            $menu1[$v[1]] = $v;
            unset($menu[$k]);
        }
    }
    // 二级菜单
    foreach ($menu as $k => $v) {
        foreach ($menu1 as $k1 => $v1) {
            if ($v[0] == $v1[1]) {
                $menu1[$v1[1]]['clildren'][$v[1]] = $v;
                unset($menu[$k]);
            }
        }
    }
    // 三级菜单
    foreach ($menu as $k => $v) {
        foreach ($menu1 as $k1 => $v1) {
            if ($v1['clildren']) {
                foreach ($v1['clildren'] as $k2 => $v2) {
                    if ($v[0] == $v2[1]) {
                        $menu1[$v1[1]]['clildren'][$v2[1]]['clildren'][$v[1]] = $v;
                        unset($menu[$k]);
                    }
                }
            }
        }
    }
    return $menu1;
}
$menu3 = menu($menu);
print_r($menu3);
?>


(三)综合问答题
3、谈谈事务处理
什么是事务呢?所谓事务(transaction),其实就是一个操作单元,在这个单元中的所有操作要么都执行,要么都失败。如果所有操作成功,事务则提交(commit)。即使一个操作失败,事务也将回滚(roll back),所有被影响的数据将恢复到以前的状态。
4、表单提交get和post有何区别?如何在客户端实现局部更新与服务器完成交互?
GET方法是form表单提交数据的默认方法,它通过URL请求来传递用户的数据。GET方法传输的数据量非常小,一般限制在2KB左右,但是其执行效率比POST方法要高。由于使用GET方法传输的数据对用户是透明的,因此可能会带来一定的安全问题。POST方法通过HTTP POST机制,将表单内的数据放置在HTML表头(header)内传递给服务器端。与GET方法不同,POST方法传递的数据对用户是不可见的,而且POST方法传递的数据量也是比较大的。
ajax
7、SQL注入原理是什么及如何防止SQL注入?
SQL注入,就是攻击者通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到让后台数据库执行恶意的SQL命令的目的,并根据程序返回的结果,获得某些攻击者想得知的数据。
防止方法:
程序员加强自身技术水平,使用固定开发的标准;
在提交服务端处理之前对数据的合法性进行检查;
封闭客户端提交信息;
替换或删除敏感字符、字符串;
错误信息不返回给用户;
数据敏感信息非常规加密,防止信息外泄;
加强数据库检查,WEB服务器日志检查;
不用字串连接建立SQL查询,而使用SQL变量,因为变量不是可以执行的脚本;
8、有如下两个表结构,用户表:’user’,用户组表:’group’:
// 表名及字段名不能够加上单引号,且group不能够使用,因此将字段group修改为groupid,表group修改为groups
CREATE TABLE user(
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
username varchar(50) DEFAULT NULL,
age int(11) DEFAULT NULL,
level int(11) DEFAULT NULL,
groupid int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE groups(
groupid int(11) NOT NULL AUTO_INCREMENT,
groupname varchar(50) DEFAULT NULL,
grouplevel int(11) DEFAULT NULL,
PRIMARY KEY(groupid)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
书写SQL查询语句查询:
(1)取出年纪在20-50之间,姓“张”,等级小于5的用户id;按降序排列
SELECT id FROM user WHERE (age BETWEEN 20 AND 50) AND username LIKE ‘张%’ AND level<5 ORDER BY age,id DESC
(2)取出所在用户组名称为“技术部”且用户组等级在2-10之间的所有年纪大于25的用户姓名
SELECT username FROM user AS u LEFT OUTER JOIN groups AS g ON u.groupid=g.groupid WHERE g.groupname=’技术部’ AND (g.grouplevel BETWEEN 2 AND 10) AND u.age>25
(3)取出年纪范围1-10,11-20,21-30,31以上各范围属于用户组“技术部”的成员数量,按照范围对应数量显示
SELECT COUNT(id) FROM user AS u
LEFT OUTER JOIN groups AS g ON u.groupid=g.groupid
WHERE (g.groupname=’技术部’) AND (u.age between 1 AND 10)
如此再重复执行3次就是了
(四)Socket操作
1、列举php Socket通信几个常用的操作函数,分别的作用是什么及如何判断获取每个操作的异常?
getprotobyname() 获取与协议名称相关的协议号
socket_create() 创建一个套接字(通讯节点)
socket_bind() 给套接字绑定名字
2、书写一个简单的Socket请求程序,指定IP为:192.168.0.1,指定端口为:9501,发送内容:12345,协议为TCP

<?php
//确保在连接客户端时不会超时
set_time_limit(0);
 
$ip = '192.168.0.1';
$port = 9501;
 
/*
 +-------------------------------
 *    @socket通信整个过程
 +-------------------------------
 *    @socket_create
 *    @socket_bind
 *    @socket_listen
 *    @socket_accept
 *    @socket_read
 *    @socket_write
 *    @socket_close
 +--------------------------------
 */
 
/*----------------    以下操作都是手册上的    -------------------*/
if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
    echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";
}
 
if(($ret = socket_bind($sock,$ip,$port)) < 0) {
    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";
}
 
if(($ret = socket_listen($sock,4)) < 0) {
    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";
}
 
$count = 0;
 
do {
    if (($msgsock = socket_accept($sock)) < 0) { echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n"; break; } else { //发到客户端 $msg ="测试成功!\n"; socket_write($msgsock, $msg, strlen($msg)); echo "测试成功了啊\n"; $buf = socket_read($msgsock,8192); $talkback = "收到的信息:$buf\n"; echo $talkback; if(++$count >= 5){
            break;
        };
         
     
    }
    //echo $buf;
    socket_close($msgsock);
 
} while (true);
 
socket_close($sock);
?>
<?php
error_reporting(E_ALL);
set_time_limit(0);
echo "
<h2>TCP/IP Connection</h2>
 
\n";
 
$port = 9501;
$ip = "192.168.0.1";
 
/*
 +-------------------------------
 *    @socket连接整个过程
 +-------------------------------
 *    @socket_create
 *    @socket_connect
 *    @socket_write
 *    @socket_read
 *    @socket_close
 +--------------------------------
 */
 
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
}else {
    echo "OK.\n";
}
 
echo "试图连接 '$ip' 端口 '$port'...\n";
$result = socket_connect($socket, $ip, $port);
if ($result < 0) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
}else {
    echo "连接OK\n";
}
 
$in = "12345\r\n";
$out = '';
 
if(!socket_write($socket, $in, strlen($in))) {
    echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
}else {
    echo "发送到服务器信息成功!\n";
    echo "发送的内容为:<font color='red'>$in</font> 
";
}
 
while($out = socket_read($socket, 8192)) {
    echo "接收服务器回传信息成功!\n";
    echo "接受的内容为:",$out;
}
 
 
echo "关闭SOCKET...\n";
socket_close($socket);
echo "关闭OK\n";
?>
 

1、用您自己的方式,写一个计算器,包含功能+-*/等等,按自己技术水平发挥,代码质量越高越好

<?php
// 第1个参数为计算符号,第2、3个参数为需要计算的值
function calculate($symbol, $v1, $v2) {
    if (is_numeric($v1) && is_numeric($v2)) {
        switch ($symbol) {
            case '+':
                return $v1+$v2;
                break;
            case '-':
                return $v1-$v2;
                break;
            case '*':
                return $v1*$v2;
                break;
            case '/':
                return $v1/$v2;
                break;
            default:
                return '计算符号只支持+-*/,其他的晢不支持';
                break;
        }
    } else {
        return '第1个参数为计算符号,第2、3个参数为需要计算的值,且必须为数字';
    }
}
echo calculate('-', 6, 3);
?>



2、简述一下mysql高级技术及在实践中的故事
3、谈谈. , – @ & — ++ ^ $ 等符号在程序编码中的用处,越详尽越好
.:连接字符串
,:array中的间隔符号
-:减法运算符
@:错误抑制运算符
&:&&为逻辑运算符,表示且
–:自减运算符(当运算符位于变量后面时,先返回变量值然后再自减;当运算符位于变量前面时,先自减然后再返回变量值)
++:自加运算符(当运算符位于变量后面时,先返回变量值然后再自加;当运算符位于变量前面时,先自加然后再返回变量值)
^:异或操作符
$:变量前缀符号
4、谈谈您对面向对象的理解
“面向对象”将构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事务在整个解决问题的步骤中的行为。
6、编程实现颠倒一个字符串字母的顺序

<?php
$v1 = 'abcde';
$v2 = '';
for ($i=strlen($v1)-1; $i>=0; $i--) {
    $v2 .= $v1{$i};
}
echo $v2;
?>
 

7、写出至少5个优化mysql数据库的方法
优化查询,如使用索引、用连接查询代替子查询
优化数据库结构,如分表、增加中间表、增加冗余字段、分析表、检查表、优化表
优化插入记录的速度,如插入记录前先禁用索引、一个insert语句插入多条记录
优化mysql服务器硬件配置,如增加内存、磁盘数量、提高磁盘读写速度
优化mysql服务器参数配置
1、用js语法(非jquery语法)写出下面语句的等价语句($表示jquery中的$)

<br />
&lt;script&gt;<br />
    $.each([0, 1, 2], function(i, n){ alert(i); });<br />
    var a = new Array(0, 1, 2);<br />
    for (var i = 0; i &lt; a.length; i++) {<br />
        alert(i);<br />
    }<br />
&lt;/script&gt;<br />

2、以下语句的作用是什么?($代表jquery中的$)
2.1

<br />
&lt;script&gt;<br />
    var a = 2;<br />
    var b = 3;<br />
    var fun = $.extend({<br />
        min:function(a, b){ return a &lt; b ? a : b; },<br />
        max:function(a, b){ return a &gt; b ? a : b; }<br />
    });<br />
    //合并一个对象,{min:2, max:3},一般是需要两个对象才执行合并的<br />
&lt;/script&gt;<br />

2.2

<br />
&lt;script&gt;<br />
    $(document).ready(function(){<br />
        $(&quot;tr&quot;).hover(function(){<br />
            $(this).addClass(&quot;over&quot;);<br />
        },function(){<br />
            $(this).addClass(&quot;out&quot;);<br />
        })<br />
    })<br />
    //当鼠标移动到tr上时,给tr添加类over,移开时,给tr添加类out<br />
&lt;/script&gt;<br />

3、行内元素有哪些?块级元素有哪些?
行内元素:
a – 锚点、br – 换行、em – 强调、img – 图片、input – 输入框、span – 定义文本内区块、textarea – 多行文本输入框、sub – 下标、sup – 上标、label – 表格标签等
块级元素:
h1 – 大标题、h2 – 副标题、h3 – 3级标题、h4 – 4级标题、h5 – 5级标题、h6 – 6级标题、div – 常用块级内容,也是css layout的主要标签、dl – 定义列表、dt – 定义列表中的项目、ul – 非排序列表、ol – 排序列表、li – 定义列表项目、table – 表格、 tbody – 表格主体(正文)、td – 表格中的标准单元格、thead – 表格的表头、tfoot – 表格的页脚(脚注或表注)、tr – 表格中的行等
4、按照你的理解描述一下javascript中的对象
javascript中的所有事物都是对象:字符串、数值、数组、函数…
此外,javascript允许自定义对象。
5、列举你工作中遇到的IE6 hack,谈谈解决方案
终极方法:条件注释 <!–[if lte IE 6]><html><![endif]–>
css选择器区分,IE6不支持子选择器,先针对IE6使用常规申明选择器,然后再用子选择器针对IE7+及其他浏览器
使用IE6不支持但其余浏览器支持的!important
当元素浮动时,IE6会错误的把浮动方向的margin值双倍计算,因此应尽量避免float和margin的同时使用
:hover(除了href)在IE6中不支持,最好不要用:hover来实现重要的功能,直接使用js事件
png半透明图片的问题,建议尽量采用png-8,如果采用png-24或者png-32的话,就需要通过js实现
6、css引入的方式有哪些?link和@import的区别是?
使用link标签
使用style属性
使用style标签
使用@import引入
区别:
link属于xhtml标签,而@import完全是css提供的一种方式
加载顺序的差别,当一个页面被加载的时候,link引用的css会同时被加载,而@import引用的css会等到页面全部被下载完才被加载
兼容性的差别,@import在一些老版本的浏览器(IE5-)不被支持
使用dom控制样式时的差别,当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的
7、清除浮动的方法有哪些,分别适用于什么情形
使用空标签清除浮动
使用overflow属性
使用after伪对象清除浮动
8、有没有关注html5和css3?请简单说一些你对它们的了解情况,或写几行代码解释说明
html5将成为html、xhtml以及html dom的新标准。
html的上一个版本诞生于1999年,自从那以后,web世界已经经历了巨变。
html5仍处于完善之中,然而,大部分现代浏览器已经具备了某些html5支持。
css3是最新的css标准。
w3c仍然在对css3规范进行开发。现代浏览器已经实现了相当多的css3属性。
9、如果让你来制作一个访问量很高的大型网站,你会如何来管理所有css文件、js文件与图片?
前端开发规范的确立,如编码模式、css重置/全局文件、背景图片采用聚合等;
页面进行标注,如模块的开始、结束等;
单个功能模块标注作者、模块名称等基本信息;
单个功能模块的名称,html/js/css/image等均要统一命名;
在前端文件url后面加上状态值,如md5值等,对应某一个具体版本;
指定图片尺寸、不要使用尺寸缩放等;
优化图片,在保持质量一定的情况下,如ysmush.it(无损压缩)等;
在生产环境中压缩、合并文件;
10、有没有做过asp.net项目的前端开发?你在项目中的角色是?
11、有一个网站,其栏目如下:
站长之家|网站运营|设计在线|网络编程|联盟资讯|服务器
其中鼠标移动到 设计在线 上显示如下二级菜单:
网页设计|web标准|视频处理|设计活动
其中鼠标移动到 网络编程 同样显示如下二级菜单
php编程|.net编程|xml编程
鼠标离开 设计在线 或 网络编程,二级菜单均会自动隐藏

利用服务器端输出的json或xml数据(数据自己构造),请使用javascript将该数据输出到层<div id=”nav”></div>中。(请求服务器端数据的方法如下 ajaxRead;服务器端地址为:”/ajax.aspx?type=nav”)
function ajaxRead(src,fun){
//该方法可以根据请求地址src读出相关的json或xml数据,然后执行回调函数fun
}
请构造出该菜单的json或者xml数据
<?php
$nav = array(
‘站长之家’ => array(),
‘网站运营’ => array(),
‘设计在线’ => array(
‘网页设计’ => array(),
‘web标准’ => array(),
‘视频处理’ => array(),
‘设计活动’ => array()
),
‘网络编程’ => array(
‘php编程’ => array(),
‘.net编程’ => array(),
‘xml编程’ => array()
),
‘联盟资讯’ => array(),
‘服务器’ => array()
);
print_r($nav);
$code = json_encode($nav);
echo preg_replace(“#\\\u([0-9a-f]+)#ie”, “iconv(‘UCS-2′,’UTF-8’, pack(‘H4’, ‘\\1’))”, $code);
?>
<script>
var json = {“站长之家”:[],”网站运营”:[],”设计在线”:{“网页设计”:[],”web标准”:[],”视频处理”:[],”设计活动”:[]},”网络编程”:{“php编程”:[],”.net编程”:[],”xml编程”:[]},”联盟资讯”:[],”服务器”:[]};
var nav = eval(json);
$(nav).each(function(i,n) {
var val = nav[i];
if (typeof (val.summary) == “object”) {
$(val.summary).each(function(i,n) {
// 二级菜单
});
} else {
// 一级菜单
}
});
</script>
请完善回调函数fun
// 遍历json数据,构建ul菜单,然后插入(append)div中
3、有一个网页地址,比如弘和公司主页:http://www.sc66666.com/index.html,如何得到它的内容?
<?php
$url = “http://www.sc66666.com/index.html”;
$contents = file_get_contents($url);
echo $contents;
?>
4、分别描述php5.2和php5.3的垃圾回收算法,并比较其优劣
php5.2的垃圾回收算法-Reference Counting,中文翻译为“引用计数”,其思想直观且简洁,容易造成内在泄露
php5.3的垃圾回收算法-Concurrent Cycle Collection in Reference Counted Systems,在可能引发累积性内存泄露的场景下,php5.2发生持续累积性内存泄露,而php5.3则总能将内存泄露控制在一个阈值以下(与根缓冲区大小有关),但是其垃圾回收机制的性能会低上一些

]]>
https://www.shuijingwanwq.com/2014/04/21/236/feed/ 0