php面试题8

一、总结

二、php面试题8

1、表单数据提交方式 POST 和 GET 的区别,URL 地址传递的数据最大长度是多少?
$_GET 传参是请求 HTTP 协议通过 url 参数传递和接收,会在浏览器地址栏中看到
$_GET 传参最多 2k 个字符
$_POST 是实体数据传参,隐藏式的,可以通过表单提交大量信息

2、SESSION 和 COOKIE 的作用和区别,SESSION 信息的存储方式,如何进行遍历?
1) SESSION:存储在服务器端, cookie:存储在客户端
2) 两者都可通过时间来设置时间长短
3) cookie 不安全,考虑安全性还是用 session
4) session 保存到服务器端,如果访问量过大,对服务器性能很影响,应使用 memcache 缓存
session
5) 单个 COOKIE 在客户端限制是 3K,即存放的 cookie 不能超过 3K,SESSION 没有限制
6) 禁止了 COOKIE 后 SESSION 是不能使用的,session 因为存储在服务器端,具体路径在
php.ini 中 session_dir 目录中,是私有的每个用户产生 session 都不同
因为$_SESSION 是数组所以遍历就用数组的方式遍历!

3、通过 PHP 函数的方式对目录进行遍历,写出程序

递归

<?php
dirs('F:\wwwroot');

function dirs($path){
$path=str_replace('\\','/',$path);
$res=opendir($path);
readdir($res);
readdir($res);
while($filename=readdir($res)){
$newpath=$path.'/'.$filename;
if(is_dir($newpath)){
echo '<font color="red">目录:</font>'.$filename.'<br />';
dirs($newpath);
}else{
echo '文件:'.$filename.'<br />';
}
}
}
?>

4、Linux 的目录进行遍历,编写 shell 脚本

Tree 命令 //现在默认 Linux 都带有的命令
Ls –lR test

5、什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?
数据库索引就是给数据库中的每张表建立索引,便于检索提高 select 效率
主键索引是给每张表的主键设置索引
唯一索引是给每张表的唯一值字段设置索引;

主键索引只有一个,唯一值索引可以有无数个

只要字段数据不重复都可以设置唯一值索引
索引的缺点是建立索引需要增加存储空间,空间利用率低,并且当数据发生变化时改变索引
资源消耗较大。

6、数据库设计时,常遇到的性能瓶颈有哪些,常有的解决方案?
1) 查询速度慢 ,避免全盘扫描,因为全盘扫描会导致大量磁盘 I/O 操作 用 sphinx 来解

2) 读写过于频繁 读写分离来做
3) 设置主从,并做好冗余备份
4) 数据库压力过大 采用分布式数据库负载均衡来解决
5) memcache 缓存层
6) 链接数据库使用 PDO,或者 mysqli 预处理缓存字段
7) 索引优化

7、编写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库?
<form method="post" action="">
<input type="text" name="usrname" />

<textarea name="main">
</textarea>
<input type="submit" name="sub"/>
</form>

8、通过 JS 创建一个当前窗口的子窗口,通过程序实现子窗口对父窗口的操作实例?
父窗体 paren.html 中内容:
<html>
<title>父窗体</title>
<head>
<script>
function demo(){
window.open('children.html','name','height=200,width=200');
}
</script>
</head>
<body onload='demo()'>
</body>
</html>
子窗体 children.html 中内容:
<html>

<title></title>
<head>
<script>
function change(){
window.opener.document.body.bgColor='red'; //控制父窗体的
背景颜色
}
</script>
</head>
<body>
<button onclick="change()">变色</button>
</body>
</html>

9、通过 JS 实现页面的前进和后退操作?
<a href="javascript:window.history.go(1)">前进</a>
<a href="javascript:window.history.go(-1)">后退</a>

10、浏览器 IE 和非 IE 浏览器的划分,区别是什么?
区别是浏览器内核的不同
CSS 和 js 兼容性的不同

#navigator

11、设定网站的用户数量在千万级,但是活跃用户的数量只有 1%,如何通过优化数据库提
高活跃用户的访问速度?
1)分表和分区
2)中间表(insert into table select * from stick where id>100
create view v_stick as select * from stick where id>100
show tables;
3)索引优化

12、服务器在运行的过程中,随着用户访问数量的增长,如何通过优化,保证性能?如果
数据库已经达到最优化,请设计出继续升级的解决方案
squid->lvs|集群->shpinx|memcache->php 静态化(缓存)->分区|主从|一主多从(读写
分离)
首先可以通过
分库分表缓解一些负担,
应用缓存服务器,如 MemCache 服务器,
增加主从服务器和负载均衡服务器提高网站读取速度,
添加静态资源服务器,存放一些静态资源,如 CSS,Js,图片等,
提高检索速度可以架设内容检索服务器如 Shpinx,Xapian,
消息队列服务器,架设数据库集群,

也可以考虑 NoSQL,如谷歌的 BigTable,DB 连接池,使数据库读写分离

13、写出程序运行的结果
<?php
 $a=0;
 $b=0;
 If($a=3||$b=3){
  $a++;
  $b++;
}
Echo$a.”,”.$b;
?>

1.1(注意运算符的优先级,true++还是1,表达式从右向左执行)

<?php
 $a=0;
 $b=0;
 If($a=4|$b=3){
  $a++;
  $b++;
}
Echo$a.”,”.$b;

?>

8.4

100011 
结果:
1.1
8.4

14、实现无限级分类的数据库设计
第一步:
create table lt_cat(
id int(11) not null auto_increment primary key,
pid int(11) not null,
path varchar(255) not null,
name varchar(50) not null
)engine=myisam default charset=utf8;
第二步: //path 中保存父级的 id
insert into lt_cat(pid,name,path) values(0,'China','0'); //id 为 1
insert into lt_cat(pid,name,path) values(0,'American','0'); //id 为 2
insert into lt_cat(pid,name,path) values(2,'new York','0,2'); //id 为 3
insert into lt_cat(pid,name,path) values(1,'beijing','0,1'); //id 为 4
insert into lt_cat(pid,name,path) values(4,'海淀','0,1,4'); //id 为 5

insert into lt_cat(pid,name,path) values(5,'上地','0,1,4,5'); //id 为 6
第三步:
Select name,concat(path,’,’,id) as bpath from lt_cat order by bpath;
Id name pid path
1 a 0 0
2 b 1 0-1
3 c 1 0-1
4 d 3 0-1-3
Select * from table order by concat(path,”-”,id);

2014.10.24-面试题:

写出你认为语言中的高级函数:
1.数组
array_filter();
array_map();
array_multisort();
array_count_values();
array_splice();

2.字符串
htmlspecialchars();
htmlspecialchars_decode();
json_encode();
json_decode();
substr_count();
pathinfo();
parse_url();
parse_str();

3.正则
preg_match_all();
preg_replace();

5.文件
file_get_contents();
file_put_contents();
scandir();
readfile();

6.画图
imagecreatefromjpeg();

7.cookie与session
setcookie();
session_id();
session_name();

8.数据库操作
mysql_fetch_assoc();
last_insert_id();

smarty模板引擎中的关键字:
1.assign();
2.display();
3.for
4.if
5.foreach
6.volist

mysql:
1.字段管理
2.索引管理
3.增、删、改、查
4.多表查询

首字母大写:
<?php
$str='hello_world';

$arr=explode('_',$str);

foreach($arr as $key=>$val){
    $arr[$key]=ucfirst($val);
}

echo join('',$arr);
 ?>

千分位:
<?php
$str='1234567890';

$str2=strrev($str);

$arr=str_split($str2,3);

echo strrev(join(',',$arr));
 ?>

复习:linux任务计划
复习:linux用户权限

网站采集:
<?php
header('content-type:text/html;charset=utf-8');
$str=file_get_contents('http://www.baidu.com');
preg_match_all('/<title>(.*)<\/title>/',$str,$ms);
echo '<h1>'.$ms[1][0].'</h1>';
echo '<hr>';
$str=file_get_contents('http://www.qq.com');
preg_match_all('/<title>(.*)<\/title>/',$str,$ms);
echo '<h1>'.iconv('gbk','utf-8',$ms[1][0]).'</h1>';
 ?>

目录遍历:
<?php

$dir='bs';

function tree($dir){
    $arr=scandir($dir);

foreach($arr as $file){
        if($file!='.' && $file!='..'){
            $path=$dir.'/'.$file;

if(is_dir($path)){
                tree($path);
            }else{
                echo $path.'<br>';
            }
        }
    }
}

tree($dir);

?>

js判断浏览器类型:
info=navigator.userAgent;    
if(info.search(/firefox/i)>=0){
    // type='firefox';
    document.body.style.background='#faa';    
}else if(info.search(/msie/i)>=0){
    // type='ie';
    document.body.style.background='#afa';    
}else if(info.search(/chrome/i)>=0){
    document.body.style.background='#aaf';    
    // type='chrome';
}

php面试题8的更多相关文章

  1. .NET面试题系列[8] - 泛型

    “可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...

  2. 关于面试题 Array.indexof() 方法的实现及思考

    这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...

  3. 对Thoughtworks的有趣笔试题实践

    记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...

  4. 从阿里巴巴笔试题看Java加载顺序

    一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...

  5. JAVA面试题

    在这里我将收录我面试过程中遇到的一些好玩的面试题目 第一个面试题:ABC问题,有三个线程,工作的内容分别是打印出"A""B""C",需要做的 ...

  6. C++常考面试题汇总

    c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...

  7. .NET面试题系列[4] - C# 基础知识(2)

    2 类型转换 面试出现频率:主要考察装箱和拆箱.对于有笔试题的场合也可能会考一些基本的类型转换是否合法. 重要程度:10/10 CLR最重要的特性之一就是类型安全性.在运行时,CLR总是知道一个对象是 ...

  8. 我们公司的ASP.NET 笔试题,你觉得难度如何

    本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识. 第1-3题会使用到一个枚举类,其定义如下: public enum QuestionType { Text = , ...

  9. 我设计的ASP.NET笔试题,你会多少呢

    本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...

  10. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

随机推荐

  1. samba-设定文件共享

    家里有两台电脑,一台装的是window,一台装的是ubuntu.一直想要实现两台电脑资源共享,今天终于成功实现了. smaba 具体简介就不说了,反正就知道,它可以创建一个服务器,然后让其他的电脑共享 ...

  2. php实现遍历文件目录

    php实现遍历文件目录 一.总结 1.熟悉简单:很经典的例子,多看,然后发现熟悉了很简单 二.php实现遍历目录 php实现遍历目录 代码一: //遍历目录 function iteral($path ...

  3. php数组时按值传递还是按地址传递

    php数组时按值传递还是按地址传递 一.总结 1.数组都是按值:php普通变量和数组的赋值(=)是按值传递,对象的赋值(=)是按址传递 2.对象和按值和按址:对象的clone(用clone关键字)是按 ...

  4. 68.qq号索引结构体写入内存,并实现快速排序

    //两个步骤,第一步读取文件,并且初始化索引结构体,把初始化的索引结构体写入到文件,第二步,读取这个文件到索引结构体 //并对这个结构体进行快速排序,得到顺序的索引,再写入文件 #define _CR ...

  5. CISP/CISA 每日一题 22

    CISSP 每日一题(答)What should be done to verify patcheshave been applied? Auditpatches, or use a vulnerab ...

  6. mysql中load data Infile运用

    速度比insert要快20倍.共享一下java程序操作. package com.mysql.csv; import java.sql.Connection; import java.sql.Driv ...

  7. php操作zip压缩文件

    php操作zip压缩文件 一.总结 1.php操作zip:php可以操作zip压缩文件,通过 ZZIPLIB扩展库,这些扩展库可以通过composer安装,或者某些版本的php会自带 2.完美操作zi ...

  8. 1.16 Python基础知识 - 装饰器初识

    Python中的装饰器就是函数,作用就是包装其他函数,为他们起到修饰作用.在不修改源代码的情况下,为这些函数额外添加一些功能,像日志记录,性能测试等.一个函数可以使用多个装饰器,产生的结果与装饰器的位 ...

  9. Photon + Unity3D 线上游戏开发 学习笔记(三)

    好的,说了两篇了 如今我们正式的入手,揭开photon 的盖头哈  建立photon项目 第一步:   在Visual studio建立一个空的 待会为了測试也会在里面建立一个client 项目 (只 ...

  10. System.Text.Encoding.Default

    string strTmp = "abcdefg某某某";int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;/ ...