一位资深php程序员在北京的面试30个题目,看看你能答出多少!

175 阅读8分钟

面试题集锦:

  1. SESSION 保存在服务器的哪里?

  2. 服务端是如何获取客户端的cookie?

  3. 如何实现SESSION共享,共享的原理是什么?

  4. 请大致说出LVS搭建的过程,文件共享原理是什么?

  5. 网络共享服务器上传数据是向一台服务器上传?还是多台?如何实现同步?

  6. 说出你所知道的数据库设计范式?常用的建模工具是什么?(mysql建模工具)

  7. 如果你是项目经理,你如何管理你的项目团队的日常事宜?

  8. 主从数据库的配置,都需要哪些基本的条件,需要配置什么内容?

  9. 说出你常用的版本控制器,SVN中需要配置哪几个配置文件

  10. LVS 在项目运行之前需要注意哪些事项,或者说会出现什么问题?

  11. ecshop为何出现字段冗余违犯设计模式,请说出为何这么做?

  12. 常用mysql优化方式,尽可能多的说?

  13. memcache原理是什么?是否能存入2M的value?

  14. 什么是队列?排它锁,Myisam 死锁如何解决?

  15. 请说出mysql常用存储引擎?memory存储引擎的特点?

  16. 如何最快速的插入5000条以上的数据?

  17. 你用过多少开源框架?

  18. ecshop 购物车信息存放在哪里?

  19. PHP生成页面缓存的原理

  20. 你所知道的缓存技术有哪些,分别做下简单介绍

1、SESSION 保存在服务器的哪里?

答:通过php.ini指定,可存在指定目录的文件中或内存中,或数据库中!

2、服务端是如何获取客户端的cookie?

答:服务器每次处理请求的进候都可以抓取头信息的cookie并设置返回。

3、如何实现SESSION共享,共享的原理是什么?

答:配置主从数据库,将SESSION存入主数据库中,常见的做法还有在各服务器端安装MEMCAHCE,将SESSION存入各MEMCACHE中,

4、请大致说出LVS搭建的过程,文件共享原理是什么?

答:无

5、网络共享服务器上传数据是向一台服务器上传?还是多台?如何实现同步?

答:无

6、说出你所知道的数据库设计范式?常用的建模工具是什么?(mysql建模工具)

答:1NF:每一条满足原子性,不可以分割;2NF:每一条记录要满足唯一性,3NF:字段不冗余,有时我们还需要反三范式,常用的建模工具:phpMyAdmin,navicat for mysql,DOS命令行;

7、如果你是项目经理,你如何管理你的项目团队的日常事宜?

答:无

8、主从数据库的配置,都需要哪些基本的条件,需要配置什么内容?

答:基本条件:二台以上数据库服务器,

配置流程:

  1. 分别打开主从服务器的bin-log;从服务器+relaylog

  2. 在主服务器根据需求建立相应的帐号并授权;

  3. 从服务器使用己创建好的帐号连接主服务器读取二进制文件并分析后同步

配置项:

主:log-bin=mysql-bin;server-id=num(int);binlog-format=mixd/statement/row/

从:log_bin=mysql-bin;server-id=num(int)//唯一;relay_log=mysql-relay-bin;log_slave_updates=1;relay_only=1;

9、说出你常用的版本控制器,SVN中需要配置哪几个配置文件

答:SVN,GIT,CVS;配置文件:mod_authz_svn.so mod_dav_svn.so移至服务器模块中并加载,配置权限,分配用户;

10、LVS 在项目运行之前需要注意哪些事项,或者说会出现什么问题?

答:无

11、ecshop为何出现字段冗余违犯设计模式,请说出为何这么做?

答:在某些环境下反三范式反而增加了效率,因此这么做!

12、常用mysql优化方式,尽可能多的说?

答:SQL语句优化;存储优化;数据库配置;服务器配置

13、memcache原理是什么?是否能存入2M的value?

答:采用C/S模式,协义是普通文本,基于libevent机制处理数据放在内存中;memcache最大只能存入1MB数据,memcache并非为存储大数据而生,但可以考虑在存储前将值先压缩或拆分成多值分配到多个key中!

14、什么是队列?排它锁,Myisam 死锁如何解决?

答:在默认情况下MYisam是表级锁,所以同时操作单张表的多个动作只能以队列的方式进行;

排它锁又名写锁,在SQL执行过程中为排除其它请求而写锁,在执行完毕后会自动释放;

死锁解决:先找到死锁的线程号,然后杀掉线程ID

15、请说出mysql常用存储引擎?memory存储引擎的特点?

答:Myisam、InnoDB、memory,memory的特点是将表存到内存中,数度快,重启后数据丢失!

16、如何最快速的插入5000条以上的数据?

答:先生成数据文件,在用sql语句导入

17、你用过多少开源框架?

答:TP/CI/ZF/YII

18、ecshop 购物车信息存放在哪里?

答:order_info;order_goods;order_action;

19、PHP生成页面缓存的原理

答:将缓存内容放入OB缓存中,在OB缓存结束或脚本执行完毕后放入到程序缓存未尾并返回!

20、你所知道的缓存技术有哪些,分别做下简单介绍

答:ob缓存,通过模板技术写入文件类缓存;memcache;redis;redis和memcache最显著的区别在于数据不仅并于内存中,同时还会在磁盘中生成文件,即使重启,数据亦可被加载;

21、HTTP 协议的原理,什么是全双工,什么是半双工?

答:HTTP协议是一种无状态的协义,直白的讲就是请求和响应,全双工是指请求和响应同时进行,半双工指单个执行;

22、ucenter通信原理?

答:就是某个应用登陆后,然后后台轮询发送给同步登陆的应用的回调文件 ,回调文件接收到用户ID之后,生成cookie或者session然后进入登陆模式。

23、Memcached的原理

答:memcached 是以守护程序方式运行于一个或多个服务器中,等待接收客户端的连接操作,客户端可以由各种语言编写(例如PHP)。PHP 等客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。

24、你用过多少种JS框架?举例说明优缺点

答:jQuery、prototype、dojo、ext、YUI;

  • jQuery:强大的DOM节点查询无人能出其左右,动画操方便;DOM封装的很好!高低版本兼容非常好

  • prototype:较早的jS库,对ajax支持较好,基于原型链面向对象很强大

  • dojo:更容易俣WEB页面具有动态能力;

  • ext:强大的UI操作高居榜首;

  • YUI:强大的类库,提供很多方法;

25、如何衡量AJAX的使用(何时使用AJAX)

答:AJAX既称无刷新技术,常用见的使用场景:表单验证,用户评分、点击;只要需要实时的与服务器交互时即可使用;

26、什么是推技术,实现原理是什么?

答:推技术又称COMET,即在客户请求时在服务器挂起长连接,一旦服务器有了新数据,它降立即反回给客户端,实时性好;

27、什么是垂直搜索,斯芬克斯中分词原理?

答:垂直搜索是指在特定的范围内搜索的上下文,搜索面只会越来越精细,而非越来越广泛;sphinx分词的原理:将文本拆分为多个单词从数据源的各个文档对像创建索引并将索引表存储于内存中!

28、sphinx中无法ha_sphinx.so是用来做什么的?

答:一个sphinx的存储模块;

29、PHP常用的合并数组的方式?

答:array_mergn;array_mergn_recursive;

30、回答PHP读取文件速度快,还是读取mysql的数据快?为何?

答:一般情况下读文件》读数据库;不同情况速度也会反向,如:数据库数据量很小,而同目录文件又非常多的情况下,读数据库大于读文件;

点关注,不迷路

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。之前说过,PHP方面的技术点很多,也是因为太多了,实在是写不过来,写过来了大家也不会看的太多,所以我这里把它整理成了PDF和文档,如果有需要的可以

点击进入暗号: PHP+「平台」

在这里插入图片描述

在这里插入图片描述

更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的 PHP技术交流群