PHP中常见的面试题(附答案)
发布时间:2017-08-07, 15:27:38 分类:PHP | 编辑 off 网址 | 辅助
图集1/1
正文 20527字数 277,105阅读
1. php中字符串可以用哪三种方法定义:单引号、双引号、定界符
2. 定义常量和静态常量的语法是:
define(‘常量名’,’常量值’)
static $var
Run code
Cut to clipboard
3. 用php打印出昨天的时间,格式是2006-05-10 22:21:21:
date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s',time()-60*60*24);
echo date('Y-m-d H:i:s', strtotime(‘-1 day’));
Run code
Cut to clipboard
4. 开启php错误报告的方法是:
修改配置文件display_errors = On, 或者ini_set(‘display_errors’, ‘On’);
Run code
Cut to clipboard
5. php中将对象或者数组序列化的函数是:
serialize()
Run code
Cut to clipboard
6.如何定义类成员的访问控制:
public private protected
Run code
Cut to clipboard
7.以下代码在浏览器中输出的结果是:
<?php
$x=87;
$y=($x%7)*16;
$z=$x>$y?1:0;
Echo $z;
?>
Run code
Cut to clipboard
结果:1
8.有一张员工表user[id,name,money],写出sql语句查询表中money的最大值:
SELECT max(money) FROM user
Run code
Cut to clipboard
写出sql语句查询money最多的前10个人,按照money由大到小排序:
SELECT * FROM user ORDER BY money DESC LIMIT 0,10
Run code
Cut to clipboard
9.写出一个函数 求两个日期的差数,例如2007-2-5~2007-3-6的日期差数:
function getDays($d1,$d2) {
$nd1 = strtotime($d1);
$nd2 = strtotime($d2);
$days = ceil(abs($nd2-$nd1) / (60*60*24));
echo $days;
}
Run code
Cut to clipboard
10.写一个php函数实现从N个整数($a=array(5,10,2,3333,20);)找出最大的一个,注意:不要使用php的max、sort等函数:
function getMax($m){
$v = 0;
foreach($m as $v1){
if($v1>$v){
$v = $v1;
}
}
return $v;
}
Run code
Cut to clipboard
11.有一个100层高的大厦,有一堆材质大小一模一样的石块,从这个大厦的某一层(临界楼层)扔下,石块就会碎,使用哪种算法能最快的得到这个临界楼层?
(1). 石子儿无限 二分法.
(2). 两个石子儿 分段算法
14 27 39 50 60 69 77 84 90 95 99
12.下面程序输出是什么?
$int_a = 5;
function factorial() {
for($int_i=$int_a; $int_i>0; $int_i--) {
$int_a = $int_a * $int_i;
}
}
factorial();
echo $int_a;
Run code
Cut to clipboard
结果: 5
13. 写一个函数Check_ip,使用正则表达式检测一个IPV4的IP是否正确,正确返回1,错误返回0,例如 Check_ip(‘127.0.0.1’)。
function check_ip($mact){
$a='/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/';
$v=preg_match($a,$mact);
if ($v!=0) {
return 1;
} else {
return 0;
}
}
Run code
Cut to clipboard
14. 请指出以下代码的错误之处(圈出来并加以改正):
<?
function baz($y $a) {
$x = new Array();
$x[sales] = 60;
$x[profit] = 20;
foreach($x as $key = $value) {
echo $key + “ ” + $value + “<br>”;
}
}
Run code
Cut to clipboard
<?php
//参考答案
function baz($y,$a){
$x=array();
$x[‘sales’]=60;
$x[‘profit’]=20;
foreach($x as $key=>$value){
echo $key.””.$value.”<br>”;
}
}
?>
Run code
Cut to clipboard
15. 有一数组 $a=array(4,3,8,9,2); 写一个排序函数对数组进行排序操作,要求使用快速排序法.快速排序的基本思想是:在待排序记录序列中,任取其中的一个记录(这里取了第一个)并以该记录的关键字作为基准,经过一趟排序后,所有关键字比它小的记录都交换到它的左边,比它大的记录都交换到它的右边.然后再分别对划分到它左,右两部分记录序列重复上述过程,直至每一部分最终划分为一个记录时为止即完成了排序工作.
//参考答案
function kuaiSort($arr)
{
//递归的出口
if (count($arr) <= 1) return $arr;
//取出第一个元素
$flag = $arr[0];
//声明两个数组
$left = [];
$right = [];
//注意这里的索引是从1开始的
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i] > $flag) {
$right[] = $arr[$i];
} else {
$left[] = $arr[$i];
}
}
$left = kuaiSort($left);
$right = kuaiSort($right);
return array_merge($left, [$flag], $right);
}
Run code
Cut to clipboard
16. 有一表 menu(id, pid, name),请用递归法打印树形菜单,将所有的menu列出来.
/*
参考sql
create table menu (
id int auto_increment primary key,
pid int,
name varchar(255)
)engine MyISAM default charset=utf8;
insert into menu values (1,0,'服装'),(2,0,'数码'),(3,1,'外套'),(4,3,'男装'),(5,2,'手机'),(6,3,'女装');
*/
//函数实现
function getMenu($pid) {
$pdo= new PDO('mysql:host=localhost;dbname=lamp;charset=utf8','root','');
//获取pid为 $pid的菜单
$stmt = $pdo->query("select * from menu where pid = $pid");
$menus = $stmt->fetchAll(PDO::FETCH_ASSOC);
//判断
if(empty($menus)) {
return;
}
$res = [];
foreach ($menus as $key => $value) {
$value['submenu'] = getMenu($value['id']);
$res[] = $value;
}
return $res;
}
$res = getMenu(0);
Run code
Cut to clipboard
17. 在开发项目中,需要上传超过8M的文件,请说明在php.ini需要修改的配置项。
post_max_size=2M(默认)
Upload_max_filesize=8M(默认)
Run code
Cut to clipboard
18. 写出session的运行机制,session与cookie的区别。多台WEB服务器如何共享session。
(1)session的运行机制:
用户A访问站点Y,如果站点Y指定了session_start();(以下假设session_start()总是存在)那么会产生一个session_id,这个session_id一般会以COOKIE的形式保存到用户A(我们可以通过在php.ini里设置session.use_only_cookies为1,强制SESSIONID必须以COOKIE专递。)。这时候SESSION ID表现为$_COOKIE[‘PHPSESSID’];(PHPSESSID可用session_name()函数来下修改),用户A接着访问,这个session id($_COOKID[‘PHPSESSID’])就会在A每次访问Y的时候传送到站点Y。在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到session id,然后通过session id,来获得与SESSION数据的关联,并返回SESSION数据
(2)session与cookie的区别:
1. 存储位置
Cookie在客户端存储,消耗客户端资源, session在服务器存储,消耗服务器资源.
2. 安全性
Session相对安全, cookie相对不安全, 因为用户可以看到传递的信息
3. 大小限制
单个cookie的最大长度为4k, session没有大小限制
4. 过期机制
Cookie的过期是实时, 过期时间一到cookie就会失效, 但session的过期是概率性触发, 也就是说即时session过期并不是立即就失效.
(3)多台服务器如何共享SESSION:
session专门存储到一台独立的服务器上,存数据库,memcache,redis都可以, 多台服务器都来这台服务器上操作session即可.
19. SQL中LEFT JOIN 的含义是什么? 如果tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的各科总成绩,请写出SQL语句.
问题1:程序执行时,每一次循环结束后变量$data的值是什么?请解释
答:第一次循环时,把下表为0的成员,引用赋值给变量$val,$val与$data[0]内容相同,
要是其中一个改变,另一个也改变,此时,$data原样输出,只是$data[0]变成了引用
输出结果 a b c
第二次循环时,$key的值为1,把$data[1]引用复制给$val.
由于$val与$data[0]也是引用关系,所以这时,$val,$data[0],$data[1]三者值同为’B’
$val不再与$data[0]有关系了,只与$data[1]是引用关系
// b b c
第三次循环时,$key的值为2,把$data[2]引用复制给$val,
由于$data[1]与$val是引用关系,所以都将改变$data[1]、$val、$data[2]三者值一样
//b c c
问题2:程序执行完后,变量$data的值是什么?请解释。(10分)
答:结果为B c c
20. 输出为Mozilla/4.0(compatible;MSIE5.01;Window NT 5.0)时,可能的输出语句是:
A. $_SERVER['HTTP_USER_AGENT_TYPE'];
B. $_SERVER['HTTP_USER_AGENT'];
C. $_SERVER['USER_AGENT'];
D. $_SERVER['AGENT'];
21. 下面功能PHP无法实现的是:
A. 服务器端脚本运行
B. 命令行脚本运行
C. 客户端图形界面(GUI)程序
D. 浏览器端执行DOM操作
22. 下面说法不正确的是:
A. PHP有四种标量类型:布尔型(boolean),整型(integer),浮点型(float),字符串(string)
B. 浮点型(float)与双精度型(double)是同一种类型
C. 复合类型包括:数组(array),对象(object),资源(resource)
D. 伪类型:混合型(mixed),数字型(number),回调(callback)
23. 执行下面的代码后, 得到的输出是:(说明: Echo print array eval list è语言结构)
<?php
echo function_exists('print');
?>
Run code
Cut to clipboard
A. 空
B. true
C. false
D. FALSE
24. 执行下面的代码的结果是什么?
<?php
$bool = TRUE;
echo gettype($bool);
echo is_string($bool);
?>
Run code
Cut to clipboard
A. boolean
B. boolean0
C. booleanFALSE
D. Booleanfalse
25. 写出下面代码执行的结果:
<?php
$a = 12;
$b = 012
$c = 0x12;
echo $a,"\n",$b,"\n",$c;
?>
Run code
Cut to clipboard
结果: 12 10 18 (二,十、八和十六进制之间转换,核心点二进制)
26. 下面代码的执行结果是什么?
<?php
echo 1+2+"3+4+5";
?>
Run code
Cut to clipboard
A. 0 C. 6
B. 3 D. "33+4+5";
27. 下面代码加入下面那个函数后返回TRUE:
return ? == 'A';
Run code
Cut to clipboard
A. ord(65)
B. chr(65)
C. 65+''
D. ''+65
28. 下面代码的输出正确的是:
<?php
$a = array(1=>5,5=>8,22,2=>'8',81);
echo $a[7];
echo $a[6];
echo $a[3];
?>
Run code
Cut to clipboard
A. 空2281
B.空8122
C.8122空
D.空空空
29. 下面代码的输出结果:
<?php
$a[bar]='hello';
echo $a[bar];
echo $a['bar'];
?>
Run code
Cut to clipboard
A. hello
B. 空空
C.报错
D.hellohello
30. 写出下面代码的结果:
<?php
echo 1>>0; //001 ==>1
echo 2>>1; //010 ==> 001=>1
echo 3<<2; //011 <== 01100 =>12
?>
Run code
Cut to clipboard
A. 012
B. 106
C. 1112
D.123
31. 下面代码的执行结果:
<?php
for($i=0;i<10;$i++){
print $i;
}
?>
Run code
Cut to clipboard
A. 0123456789
B. 012345678910
C. 无输出
D. 死循环
32. 下面对于echo, print 的描述正确的是:
A. echo, print 都可以打印多个参数
B. print 可以打印多个参数,echo 不可以
C. echo 可以打印多个参数,print不可以
D. echo, print 都不可以打印多个参数
33. 对于正面的代码
<?php
$fruits = array('strawberry'=>'red', 'banana'=>'yellow');
?>
Run code
Cut to clipboard
不能够正确得到结果'yellow'的代码是:
A. echo "A banana is {$fruits['banana']}";
B. echo "A banana is $fruits['banana']";
C. echo "A banana is {$fruits[banana]}";
D. echo "A banana is $fruits[banana]";
34. 下面代码执行完成后的结果是什么?
<?php
function change(){
static $i = 0;
$i++;
return $i;
}
print change();
print change();
?>
Run code
Cut to clipboard
结果: 1 2
35. 下面的语句输出结果 :
<?php
$foo = 'test';
$bar = <<<EOT
$foo bar
EOT;
echo $bar;
?>
Run code
Cut to clipboard
a. $foo bar;
b. 'EOT' $foo bar EOT;
c. test bar;
d. 'EOT' test bar EOT;
36.$b的值是:
$a=3; $b=4;
if($a||$b=5){
echo 'tudo';
}
Run code
Cut to clipboard
a. 4;
b. 5;
c. 3;
d. false
37. 什么事面向对象?主要特征是什么?
1) 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。
2) 主要特征:封装、继承、多态
38. HTTP 状态中302、403、 500代码含义?
302重定向、
403服务器拒绝访问
500服务器内部错误
39. Linux 下建立压缩包,解压缩包的命令。
压缩 tar czf test.tar.gz test.php
解压 tar xzf test.tar.gz
40. 请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别?
1)类型介绍:
int是数字类型,
char固定长度字符串,
varchar长度变字符串,
datetime日期时间型,
text文本字符串
2)varchar 和 char的区别:
1. Char定义的为固定长度, 范围是0~255, varchar定义的为变长长度, 范围为0~65535
2.char在存储时会自动补空格, varchar不会.
3.varchar在存储时会多占用1~2个字节记录长度, char不会.
41. MyISAM 和 InnoDB 的基本区别?
1. 查询速度 myisam快一些
2. 事务 innodb支持, myisam不支持
3. 全文索引 myisam支持, innodb不支持
4. 锁机制 myisam支持表所, innodb支持行锁
5. 存储文件 myisam产生三个文件(.frm .myd .myi), innodb产生两个文件(.frm .ibd)
42. 不使用cookie向客户端发送一个cookie.
header('set-cookie: abc=abc;max-Age=3600;path=/');
Run code
Cut to clipboard
43. isset() 和 empty() 区别,对不同数据的判断结果
1)isset()是判断变量是否存在,是否定义
2)empty()是判断变量的值是否为空.
44. 如何在页面之间传递变量(至少两种方式) ?
1)get
2)post
3)ajax
4)curl
5)cookie
6)session
45. 写出匹配URL的正则表达式.
http://www.lizhenqiu.com/index.php?id=1&name=user1
(http|ftp):\/\/(www.)?(\S*)(\?\S*\&\S*)?(.*)\/\/(.*)\?(.*)?
Run code
Cut to clipboard
46. 请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序
快速排序
冒泡排序
插入排序
归并排序
<?php
Function mysort($arr){
For($i=0; $i<count($arr); $i++){
For($j=0; $j<count($arr)-1; $j++){
If($arr[$j] > $arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
Return $arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));
Run code
Cut to clipboard
47. 在数据库test中的一个表student,字段是name,class,score。分别代表姓名、所在班级,分数。
1) 算出每个班级中的学生,按照成绩降序排序;
select name,class,score from student order by score desc;
Run code
Cut to clipboard
2) 查出每个班的及格人数和不及格人数,格式为:class、及格人数、不及格人数
SELECT
sum(case when score >= 60 then 1 else 0 end) jige,
sum(case when score < 60 then 1 else 0 end) bujige,
class
FROM `score`
GROUP BY `class`
Run code
Cut to clipboard
3) 用PHP写入连接数据库("localhost","msuser","mspass")、执行以上SQL、显示结果、判断错误、关闭数据库的过程
$conn=mysql_connect(‘localhost’,'msuser’,’mspass′);
Mysql_select_db(‘test’);
$sql="SELECT
sum(case when score >= 60 then 1 else 0 end) jige,
sum(case when score < 60 then 1 else 0 end) bujige,
class
FROM `score`
GROUP BY `class`";
if($result=Mysql_query($sql)){
while($row=mysql_fetch_assoc($result)){
print_r($row);
}
}
Mysql_close($conn);
Run code
Cut to clipboard
48. echo count(“abcd”);输出多少?
答案:
答案是1,count是计算arry长度的字符串长度用strlen来计算
49. 运行以下代码后$a $b $c 分别是?
<?php
$a=$b=$c=0;
$a=$b && $c;
Run code
Cut to clipboard
答案:false、0、0
50. 请用php的heredoc语法格式输出:hello world!
<?php
$v=”hello world”;
$str=<<<EOT
$v
EOT;
echo $str;
Run code
Cut to clipboard
51. $string = "abcdefg",那么$string{4}的值是?
答案:e
52. 简述echo(),print(),print_r()的区别。
答案:echo()可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构,而不是真正的函数,因此不能作为表达式的一部分使用。
print()是一个函数,用来打印一个值,如果字符串成功显示则返回true,否则返回false
print_r()是一个函数,用来打印一个值,值为字符串或数字进行简单打印,而数组则以括起来的键和值列表形式显示,并以Array开头。
拓展:var_dump()是一个函数,用来显示关于一个或多个表达式的结果信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
53.用PHP写出显示客户端IP与服务器IP的代码。
客户端IP:echo $_SERVER[‘REMOTE_ADDR’];
或者echo getenv(‘REMOTE_ADDR’);
服务器IP:echo $_SERVER[‘SERVER_ADDR’];
或者echo getenv(‘SERVER_ADDR’);
Run code
Cut to clipboard
54、用正则表达式判断$a是否是一个以半角逗号分隔的多个手机号码组成的字符串,是输出yes
<?php
$math=“/((\d){11},)+/”;
$str=”12345678901,12345678901”;
if(preg_match($match,$str)){
echo ‘yes’;
}
?>
Run code
Cut to clipboard
55. 请定义一个名为MyClass的类,这个类只有一个静态方法justDoIt。
class MyClass
{
public static function justDoIt()
{
}
}
Run code
Cut to clipboard
56. 写出你知道的几种设计模式,并用php代码实现其中一种。
答案:单态模式、工厂模式、生成器模式、代理模式、迭代模式
单态模式举例:
class test{
private static $obj=null;
private function __construct(){
echo ‘第一次连接数据库’;
}
public static function getInstance(){
if(is_null(self::$obj)){
self::$obj=new self();
return self::$obj;
}
}
}
Run code
Cut to clipboard
57. 打开php.ini中的Safe_mode,会影响哪些函数?
答案: chown()、chgrp()、chdir()、fopen()、rmdir()、copy()、link()、exec()
58. 请描述如下URL重写规则的用意。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
RewriteRule . /index.php [L]
</IfModule>
Run code
Cut to clipboard
答案:将URL地址强制解析为./index.php
59. 你会用哪个函数设置当前内容的Content-Type?
header函数
//定义编码
header(“Content-type:text/html;charset=utf-8”);
//CSS
header(“Content-type:text/css”);
//JavaScript
header(“Content-type:text/javascript”);
//JPEG Image
header(“Content-type:image/jpeg”);
//GIF Image
header(“Content-type:image/gif”);
//PNG Image
header(“Content-type:image/png”);
//JSON
header(“Content-type:application/json”);
//PDF
header(“Content-type:application/pdf”);
//XML
header(“Content-type:text/xml”);
//ok
header(“HTTP/1.1 200 OK”);
//404头
header(‘HTTP/1.1 404 Not Found’);
//设置地址被永久的重定向
header(‘HTTP/1.1 301 Moved Permanently’);
//转到一个新地址
header(‘Location:http://www.example.org/’);
//文件延迟转向
header(‘Refresh:10;url=http://www.example.org/’);
print ‘You will be redirected in 10 seconds’;
//纯文本格式
header(‘Content-type:text/plain’);
Run code
Cut to clipboard
60. Warning: Cannot modify header information - headers already sent by (output started at D:\src\init.php:7) in D:\src\init.php on line 10 通常什么情况下php会报该警告信息?
答案:header(‘Content-type:text/html;charset=utf-8’)头之前有任何输出均会出现如下错误。
61. A通过页面输入用户名abc和密码123登录到www.10086.cn,请写出该次请求的HTTP协议报文(包括请求行、消息报头、请求正文)。
答案:
Post /login HTTP/1.1
============
host: www.10086.cn
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.7.6)
Content-length: 25
Refer: www.10086.cn
============
Username=abc&password=123
Run code
Cut to clipboard
62. 写一段php代码遍历某个目录下的所有文件和子文件夹。
<?php
function scandir($path){
$files = array();
$handle = opendir($path);
if ($filename=@readdir($handle)) {
if ($filename==’.’ || $filename==’..’) {
continue;
}
if (is_dir($filename)){
$files[$filename] = scandir($path.’/’.$filename);
} else {
$files[$filename] = $filename;
}
}
return $files;
}
?>
Run code
Cut to clipboard
63. 查看磁盘空间使用率的linux命令是什么?查看有哪些系统进程正在运行命令是什么?监测linux性能(cpu,磁盘io,内存,网络等)都用到哪些命令?
答案:df、ps、top
64. linux下终止一个进程用什么命令?打包压缩和解包用什么命令?建立软连接的命令是?
答案:
pkill -9 进程名或kill 进程号、
tar zcvf和tar zxvf
ln
65. 如果要求每隔5分钟执行一次脚本five.php,如何实现?
答案:
crontab –e
*/5 * * * * php five.php
Run code
Cut to clipboard
66. mysql中varchar的最大长度是多少?用什么类型的字段存储大文本?date和datetime和timestamp什么区别?怎么看数据库中有哪些sql正在执行?
答案:
65535、
text、
区别:
1. 存储空间不同
a) TIMESTAMP占用4个字节
b) DATETIME占用8个字节
2. 受时区影响
a) TIMESTAMP实际记录的是1970-01-01 00:00:01到现在的数,受时区影响
b) DATETIME不受时区影响
3. 时间范围不同
a) TIMESTAMP的时间范围是:'1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC
b) DATETIME的时间范围是:'1000-01-01 00:00:00' ~ '9999-12-31 23:59:59'
67. 自动更新
TIMESTAMP类型在默认情况下,insert、update 数据时,TIMESTAMP列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。
show processlist;
Run code
Cut to clipboard
68. MySQL数据库的一个表:User
Name Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
写出如下操作的SQL语句:
(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
(b) 请用sql语句把张三的时间更新成为当前系统时间
(c) 请写出删除名为张四的全部记录
答案:
(a)inser into User(Name,Tel,Content,Date) values(“小王”,12354748547,”高中毕业”,”2007-05-06”);
(b)update User set Date=date(now()) where User=”张三”;
(c)delete from User where User=”张三”;
69. 下面哪个表达式不能将两个字符串$s1和$s2串联成一个单独的字符串?
A.$s1+$s2
B.“{$s1}{$s2}”
C.$s1.$s2
D. implode(‘’,array($s1,$s2))
70.下面的脚本运行以后,$array数组所包含的值是什么?
$array = array(‘1’,’1’);
foreach($array as $k=>$v){
$v = 2;
}
Run code
Cut to clipboard
A. array(‘2’,’2’)
B. array(‘1’,’1’)
C. array(2,2)
D. array(Null,Null)
71. 写出下列代码的输出结果:
function myfunc($argument){
echo $argument+ 10;
}
$variable = 10;
echo “myfunc($variable)=”.myfunc($variable);
Run code
Cut to clipboard
20myfunc(10)=
72. 请用尽可能少的语句实现对输出Email地址进行验证的功能
//用正则表达式匹配
If(preg_match(‘/\w+@\w+\.\w+/’,$str)){
Echo “是邮箱”;
}else{
Echo “不是邮箱”;
}
Run code
Cut to clipboard
73. 根据你的经验谈谈写php程序需要注意哪些问题
1)代码一定要书写规范,必须加注释
2)能用系统函数则用系统函数,尽量不要自定义函数,否则效率会偏低
3)能用字符串函数解决就不要用正则表达式,效率较低
4)不要相信用户的输入.做好参数检测
5)尽量使用预处理,防止sql注入.
6)静态成员方法的速度要比普通成员方法快.
7)$row[’id’] 的速度是$row[id]的7倍
8)echo 比 print 快
9)注销那些不用的变量尤其是大数组
10)include文件时尽量使用绝对路径
11)用@屏蔽错误消息的做法非常低效,极其低效。
12)foreach效率更高,尽量用foreach代替while和for循环;
13)用单引号替代双引号引用字符串;
74. php是否有安全问题,如果有,请列举说明。
1. 文件上传
2. sql注入
3. xss
75. cron后台常驻程序(daemon)用于:
A.负责文件在网络中的共享
B.管理打印子系统Manages theprinting subsystem
C.跟踪管理系统信息和错误
D. 管理系统日常任务的调度(scheduing)
76.怎么了解您在当前目录下还有多大空间? D
A.Use df
B. Use du /
C. Use du
D. Use df
77. 有一个备份程序mybackup,需要在周一至周五下午一点和晚上八点各运行次,下面哪一条crontab的项可以完成这项工作?
A.0 13,20 * * 1,5 mybackup
B.0 13,20 * * 1,2,3,4,5, mybackup
C.* 13,20 * *1,2,3,4,5, mybackup
D.0 13,20 1,5 * *mybackup
78. 使用命令可以查看Linux的启动信息?
A.mesg –d
B.dmesg
C.cat /etc/mesg
D.cat /var/mesg
79. 在vi中退出不保存的命令?
A.:qt
B.:r
C.:wq
D.:q!
80.如何判断SQL语句的运行效率?如何优化一个查询SQL?
查看它的运行时间,如果时间过长则说明sql语句的执行效率很低
Set profiling = 1;
.....
Show profiles;
优化:
A) 尽量使用简单查询, 不要使用联表和子查询
B) 不要使用*, 指定字段.
C) 模糊查询的时候 % 不能开头
D) 给条件字段添加索引
E) 分组时添加group by id order by null
81 .试写出mysql数据库优化的一些方法
缓存(读缓存, 写缓存)
优化SQL语句
建立索引
分库分表
主从复制,读写分离
82. 简述smarty的工作原理,如何对smarty进行二次开发?
原理:
1、 smarty将php源文件,首先编译成中间文件
2、 如果启用缓存,再根据编译文件生成缓存文件
3、 之后每次访问都会访问编译文件
二次开发
创建一些方便的标签, 方便在模板中使用, 比如 {article}{/article}
83. ajax技术利用了什么协议?简述ajax的工作机制。
HTTP协议。
在页面不刷新的情况下进行以下操作:
(1)对象初始化
(2)发送请求
(3)服务器接收请求并进行处理
(4)服务器返回响应数据
(5)客户端接收
(6)处理服务器返回的数据
84. 一个人卖苹果,6元/斤的进货价,10元/斤卖出。某一天他卖了1斤苹果,收到了50元假钞,但没有发现,给客户找了40元钱零钱。请问,这人这次卖苹果亏了多少钱?
46元 6元的进价和40元零钱 全部46元
85. 2. 一个小猴子边上有100根香蕉,它要走过50米才能到家,每次他最多搬50根香蕉,每走1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
16根. 问题简化成走最短的路,背更多的水果.但路和水果之间有限制! 题目已经限制,猴子最多背50,我们计算其消耗仅剩下50根的米处,
假设猴子第一次背了50根,走了X米,在回来搬第2个50根,就有:
100-3X .........剩下的香蕉数(先走X,往反2X)
50-X ............剩下的米处
问题就明白了: (100-3X)-(50-X)=50-2X ........回到家时的香蕉数
问题就简化为在条件: (100-3X)<=50的情况下,求 (50-2X)的最大值! 得到: X=17时, 50-2X 最大值 16 方案: 猴子先搬50根,走17米,在回来搬50根走到17米处,回来后再搬剩下的49根走完33米,最后得到16根!
86. 分金条问题
你让某些人为你工作了七天,你要用一根金条作为报酬。这根金条要被分成七块。你必须在每天的活干完后交给他们一块。如果你只能将这根金条切割两次,你怎样给这些工人分?
切割两次,分出三块 1、2、 4。
第一天 付1
第二天 收回1,付2
第三天 付1(1+2)
第四天 收回1、2 付4
第五天 付1 (4+1)
第六天 收回1 付2(4+2)
第七天 付1 (4+2+1)
87. 有十箱苹果,里面各放苹果10个,其中9箱装的苹果是50克/只,另一箱装的苹果是60克/只,现给你一地秤,要求只称一次就能准确找到装60克/只的那箱苹果,请问如何做?
先给十个箱子标上序号,然后从一号箱子拿出苹果一只,二号拿两只,以此类推....十号箱子拿十只。然后称下总重量,减去500克*倍数,余数是十的多少倍就是几号箱子中的。这样就只称了一次。
88. 不均匀分布的香,每根香烧完的时间是一小时,你能用什么方法来确定一段15分钟的时间?
一支两端同时点燃烧完一支是30分,另一支只点一端烧了一半,剩下的支持30分钟,在同时点燃两端,得15分
性格测试
1.简单说一下,你是一个什么性格的人?
主要说下团结团队,活泼开朗,和人交往没有障碍
每次说完最好举个小例子
2.你认为你自身最大的优点和缺点是什么?
优点 按照实际的说 比如团结集体 活泼开朗 等
缺点 把不是缺点的缺点说出来就行
3.是否愿意在比较大的工作压力下工作?有创业公司的工作经验么?简单说一下你对创业公司的看法。
可以 压力越大动力越大
经验 按实际去回答
看法:必须有明确的目标,坚持下去的精神,良好的管理团队,和团结的集体
4.你具体是使用什么方法来提供自身的技术(或业务)水平的?
逛逛技术论坛
看视频教程...
聚会
5.说说你对本公司的了解。简单说说你理想中下面找的工作是一个什么样的工作?简单说一下离开上一个工作的原因是什么?
面试以前必须看看这个公司的简介 回答出这个公司的业务和特色
简单谈谈你应聘职业的工作内容,表达出对这份工地的兴趣和爱好
原因不要抱怨上个公司或者领导不好,回答自身原因多一点
整理自http://www.cnblogs.com/AngryBigCat/p/7277648.html
(支付宝)给作者钱财以资鼓励 (微信)→
标签: 面试3
有过 1 条评论 »
<?php echo count('abcd');//1 echo count('“abcd”');//1 echo strlen("abcd");//4 echo strlen('abcd');//4 echo strlen('“abcd”');//10