php面试数据库设计范式 php数据库面试题

谁有面试phper的经验

这方面网上有比较多的,针对3-5年的PHPer常见的面试题,参考如下:

1、平时喜欢哪些php书籍及博客?CSDN、虎嗅、猎云

2、js闭包是什么?

3、for与foreach哪个更快?

4、php鸟哥是谁?能不能讲一下php执行原理?

5、php加速器有哪些?apc、zend、xcache…..能不能讲一下它的加速原理?

6、Node.js能彻底代替php+apache是扯淡。

7、怎样判断一个值是否存在于数组中?in_array(),array_key_exists,……

8、怎样判断select语句中是否使用了索引?explain

9、sphinx的中文分词词库使用第三方库还是自己建库?

10、如果一个被面试者经验少、基础差,此时却问些高深的知识。要怀疑它的稳定性,可以提问加班对他会不会有抵触。

11、mysql与mysqli的区别有哪些?

12、将来的发展方向?安全、还是数据挖掘、大数据处理?

13、php的面向对象:类的修饰符、封装、继承、多态体现方面

14、php 多态是什么?

15、Type Hinting:

16、php的设计模式:单例模式、工厂模式、生产者模式……等23种

17、服务器状态码:200、202、301、404、500……

18、i++与++i的区别?

19、项目开发:电商项目中的购物车数据持久化、考试系统的安全性考虑、

20、mysql设计基础:三大范式、功能-思维导图、创建表的第一字段是什么?

21、mysql字段char、varchar、int、smallint、tinyint、mediumint、bigint、decimal、double、float字节数及应用场景。

22、memcache与mongoDB、Redis各自的使用场景是什么?

23、为什么mongoDB与Redis非但没有形成竞争反而是互补关系?

24、Redis数据类型有哪些?int、string、hash、set、list ?

25、安装linux软件时使用make方式还使用yum方式?

26、linux网络优化:查看进程ps -aux|grep mysqld、怎样查看最大文件打开数?

27、C语言中的虚函数是什么?

28、1条微薄要推送给100万个粉丝该怎么处理?

29、知道哪些算法?冒泡排序?快速排序?二分查找法?

30、yii thinkphp ci 各自优点

31、php 设计模式有哪些?

32、c 排序算法有哪些?

33、php 基本结构是什么?

34、memcache magent 分布式设计?

35、redis 分布式设计,如何设计?

36、mongo 集群架构是怎样的?

37、mysql 索引原理及sql性能优化

38、tcp/ip 网络协议,osi7层指是什么?

39、php 处理大数据业务

40、linux 应用 负载性能查看 ?

41、nginx 实战优化业务功能 ?

42、谈一下近三年来你的得意之作?

43、看看简历,会问一些过去做的项目的用户量、pv、吞吐量、相关难点和解决方法等

44、数据库设计经验,为什么进行分表? 分库?

45、一般多少数据量开始分表? 分库? 分库分表的目的? 什么是数据库垂直拆分? 水平拆分? 分区等等?可以举例说明

46、数据库优化有哪些? 分别需要注意什么?

47、web开发方面会遇到哪些缓存? 分别如何优化?

48、给你256M的内存,对10G的文件进行排序(文件每行1个数字),如何实现?

49、对10G的文件进行查找如何实现?

50、统计10G文件每个关键字出现的次数如何实现?

51、假如你现在是12306火车订票的设计师,你该如何设计满足全国人民订票?

52、假如有1亿用户的访问量,你的服务器架构是怎样的? 用户信息的存储方案如何设计?

53、如果你是技术组长,所带团队任务进度无法完成你该如何解决?

54、如果在进度排满的前提下插入任务,你该如何保证总进度不延期?

55、如果有的工程师今天预定任务没有完成,你该如何解决?

56、从你的经验方面谈一下如何构建高性能web站点? 需要哪些环节? 步骤? 每个步骤需要注意什么如何优化等?

57、为什么要对数据库进行主从分离?

58、如何处理多服务器共享session?

59、一个10G的表,你用php程序统计某个字段出现的次数,思路是?

60、会告诉你一个nginx日志例子,用你认为最佳的编程语言统计一下http响应时间超过1秒的前10个url?

61、给你一个mysql配置文件,用你认为最佳的编程语言解析该文件?

62、给你两个路径a和b,写一个算法或思路计算a和b差距几层并显示a和b的交集?

63、给你一个url,在nginx配置一下rewrite指定到某个具体路径?

64、一个php文件的解释过程是? 一般加速php有哪些? 提高php整体性能会用到哪些技术?

65、session和cookie生存周期区别? 存储位置区别?

66、require、include、require_once、include_once区别? 加载区别? 如果程序按需加载某个php文件你如何实现?

67、chrome号称为多线程的,所以多线程和多进程的区别为?

68、php在2011年底出现hash碰撞,hash碰撞原理为? 如何进行修复?

69、web不安全因素有哪些? 分别如何防范?

70、假如两个单链表相交,写一个最优算法计算交点位置,说思路也可以?

71、假如你是技术组长? 如何提高团队效率?

72、nginx负载均衡有哪些? 如果其中一台服务器挂掉,报警机制如何实现?

73、不优化前提下,apache一般最大连接数为? nginx一般最大连接数为? mysql 每秒insert ? select ? update ? delete?

74、mysql 数据类型有哪些 ? 分别占用多少存储空间 ?

75、nginx设置缓存js、css、图片等信息,缓存的实现原理是?

76、如何提高缓存命中率? 如何对缓存进行颗粒化?

77、php的内存回收机制是?

78、我的所有问题都问完了(当然没有这么多),你有什么问题问我没有?

PHP程序员上机面试题(并附答案,回答好的加分)

某大公司的PHP面试题

管理提醒: 本帖被 haowubai 执行取消置顶操作(2009-07-30)

1. 如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?

[php]

echo $_SERVER [‘PHP_SELF’];

echo $_SERVER [‘SERVER_ADDR’];

[/php]

2. 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

[php]

$begin=strtotime(‘2007-2-5’);

$end=strtotime(‘2007-3-6’);

echo ($end-$begin)/(24*3600);

[/php]

3. 请写一个函数,实现以下功能:

字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。

[php]

function changeStyle( $str) {

/*$str = str_replace ( “_”, ” “, $str );

$str = ucwords ( $str );

$str = str_replace ( ” “, “”, $str );

return $str; */

$arrStr=explode(‘_’,$str);

foreach($arrStr as $key=$value){

$arrStr[$key]=strtoupper(substr($value,0,1)).substr($value,1);

}

return implode(”,$arrStr);

}

$s = “open_door”;

echo changeStyle ( $s );

[/php]

4. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:

[php]$arr1 = array (

‘0’ = array (‘fid’ = 1, ‘tid’ = 1, ‘name’ =’Name1′ ),

‘1’ = array (‘fid’ = 1, ‘tid’ = 2 , ‘name’ =’Name2′ ),

‘2’ = array (‘fid’ = 1, ‘tid’ = 5 , ‘name’ =’Name3′ ),

‘3’ = array (‘fid’ = 1, ‘tid’ = 7 , ‘name’ =’Name4′ ),

‘4’ = array (‘fid’ = 3, ‘tid’ = 9, ‘name’ =’Name5′ )

);

$arr2 = array (

‘0’ = array (

‘0’ = array ( ‘tid’ = 1, ‘name’ = ‘Name1’),

‘1’ = array ( ‘tid’ = 2, ‘name’ = ‘Name2’),

‘2’ = array ( ‘tid’ = 5, ‘name’ = ‘Name3’),

‘3’ = array ( ‘tid’ = 7, ‘name’ = ‘Name4’)

),

‘1’ = array (

‘0’ = array ( ‘tid’ = 9, ‘name’ = ‘Name5’ )

)

);

?php

$arr1 = array (

‘0’ = array (‘fid’ = 1, ‘tid’ = 1, ‘name’ =’Name1′ ),

‘1’ = array (‘fid’ = 1, ‘tid’ = 2 , ‘name’ =’Name2′ ),

‘2’ = array (‘fid’ = 1, ‘tid’ = 5 , ‘name’ =’Name3′ ),

‘3’ = array (‘fid’ = 1, ‘tid’ = 7 , ‘name’ =’Name4′ ),

‘4’ = array (‘fid’ = 3, ‘tid’ = 9, ‘name’ =’Name5′ )

);

function changeArrayStyle($arr){

foreach($arr as $key=$value){

$result[$value[‘fid’]][]=$value;

}

return array_values($result);

}

$arr2=changeArrayStyle($arr1);

echo “pre”;

var_dump($arr2);

[/php]

5. 请简述数据库设计的范式及应用。

一般第3范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免了SQL语句过于庞大所造成系统效率低下。

ANSWER:

第一范式:若关系模式R的每一个属性是不可再分解的,再属于第一范式。

第二范式:若R属于第一范式,且所有的非码属性都完全函数依赖于码属性,则为第二范式。

第三范式:若R属于第二范式,且所有的非码属性没有一个是传递函数依赖于候选码,则属于第三范式。

6.一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。

存储过程:

[php]

DELIMITER //

create procedure proc_countNum(in columnId int,out rowsNo int)

begin

select count(*) into rowsNo from member where member_id=columnId;

end

call proc_countNum(1,@no);

select @no;

[/php]

视图:

create view v_countNum as select member_id,count(*) as countNum from member group by member_id

select countNum from v_countNum where member_id=1

7 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

[php]select

case

when first_namemiddle_name then

case when first_namelast_name then first_name

else last_name end

else

case when middle_namelast_name then middle_name else last_name

end

end as name

from member

[/php]

8请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?

ANSWER: sql优化有鸟用,不如直接加索引。

9 如果模板是用smarty模板。怎样用section语句来显示一个名为$data的数组。比如:

[php]$data = array(

[0] = array( [id]=8 [name]=’name1′)

[1] = array( [id]=10 [name]=’name2′)

[2] = array( [id]=15 [name]=’name3′)

……

)[/php]

写出在模板页的代码? 若用foreach语句又要怎样显示呢?

占无答案.

10 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。(目录操作)

[php] ?php

$d = dir(dirname(__file__));

//echo “Handle: ” . $d-handle . “\n”;

//echo “Path: ” . $d-path . “\n”;

while ( false !== ($entry = $d-read ()) ) {

echo $entry . “br /”;

}

$d-close ();

[/php]

11 两张表 city表和province表。分别为城市与省份的关系表。

city:

id City Provinceid

1 广州 1

2 深圳 1

3 惠州 1

4 长沙 2

5 武汉 3

………. 广州

province:

id Province

1 广东

2 湖南

3 湖北

……….

(1) 写一条sql语句关系两个表,实现:显示城市的基本信息。?

(2) 显示字段:城市id ,城市名, 所属省份 。

如:

Id(城市id) Cityname(城市名) Privence(所属省份)

。。。。。。。。。

。。。。。。。。。

(2)如果要统计每个省份有多少个城市,请用group by 查询出来。?

显示字段:省份id ,省份名,包含多少个城市。

ANSWER:

1.select A.id,A.Cityname,B.Province from city A,province B where A.provinceid=B.id

2.select B.id,B.Province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id

12. 按照你的经验请简述软件工程进行软件开发的步骤。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用过那种,有缺点是什么?

公司用dbdesigner及cvs,测试管理工具用的是Mantis

13. 请简述操作系统的线程与进程的区别。列举LINUX下面你使用过的软件?

14. 请使用伪语言结合数据结构冒泡排序法对以下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。

[php]function bubble_sort( $arr){

$number=count($arr);

for($i=0; $i$number-1; $i++){

for($j=0; $j$number-1-$i; $j++){

if($arr[$j]$arr[$j+1]){

$tmp=$arr[$j];

$arr[$j]=$arr[$j+1];

$arr[$j+1]=$tmp;

}

}

}

}

$str=”10 2 36 14 10 25 23 85 99 45″;

$arr=explode(” “,$str);

bubble_sort($arr);

echo “pre”;

var_dump($arr);

[/php]

数据库设计遵守哪些范式

关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

第一范式 无重复的列

第二范式 属性完全依赖于主键

第三范式 属性不能传递依赖于主属性(属性不依赖于其它非主键属性)

数据库设计中的五大范式

对于表中的每一行,必须且仅仅有唯一的行值.在一行中的每一列仅有唯一的值并且具有原子性。(第一范式是通过把重复的组放到每个独立的表中,把这些表通过一对多关联联系起来这种方式来消除重复组的。) 即无重复列。

第二范式要求非主键列是主键的子集, 非主键列活动必须完全依赖整个主键。 主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。一旦创建,主键无法改变,外键关联一个表的主键。主外键关联意味着一对多的关系。

(第二范式处理冗余数据的删除问题。当某张表中的信息依赖于该表中其它的不是主键部分的列的时候,通常会违反第二范式。)

第三范式要求 非主键列互不依赖。

(第三范式规则查找以消除没有直接依赖于第一范式和第二范式形成的表的主键的属性。我们为没有与表的主键关联的所有信息建立了一张新表。每张新表保存了来自源表的信息和它们所依赖的主键。)

第四范式 禁止主键列和非主键列一对多关系不受约束。

第五范式 将表分割成尽可能小的块, 为了排除在表中所有的冗余。