我们学会了编程的相关知识后,不论是哪一种类型的,最后都需要进行一些测试检验学习成果。这里也不得不提到一个沉重的话题,每个程序员必经的阶段就是面试及准备。对于中级程序员来说,面试题的基础考察部分不会以提问的形式展开,需要结合其他模块的知识点一起运用,同时对具体数据库使用的细节进行剖析。下面我们一起看看相关题型。
1.如何设计或配置Mysql,才能达到高效使用的目的。
(1)数据库设计方面,设计结构良好的数据库,允许部分数据冗余。 选取最适用的字段属性,尽可能把字段设置为NOTNULL,这样在查询的时候,数据库不用去比较NULL值。
(2)系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。 写高效sql语句,以提高效率。使用连接(join)来代替子查询使用联合(union)来代替手动创建的临时表所得皆必须,只从数据库取必须的数据。必要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。
2.SESSION 保存在服务器的哪里?
通过php.ini指定,可存在指定目录的文件中或内存中,或数据库中!
(存储在服务器上的php指定的目录中的(session.save_path)的位置进行的存放)
3.一次完整的HTTP请求所经历的步骤
(1)对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
(2)根据这个IP,找到对应的服务器,发起TCP的三次握手
(3)建立TCP连接后发起HTTP请求
(4)服务器响应HTTP请求,浏览器得到html代码
(5)浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)
(6)浏览器对页面进行渲染呈现给用户
4.redis的五大数据类型的使用场景
(1)string 存储字符串,场景是简单缓存
(2)list 队列,场景是模拟队列,秒杀,点赞,回复等有一些先后顺序的
(3)set 无序的唯一列表,场景:抽奖,去重,好友圈,共同好友之类的
(4)SortedSet有序的场景:排行榜,各种热度排行
(5)hash
5.redis是单线程的吗,可以多线程吗
优点:
(1)绝大部分请求是纯粹的内存操作(非常快速)
(2)采用单线程,避免了不必要的上下文切换和竞争条件
(3)非阻塞IO - IO多路复用(select,poll,epoll)
(4)高效的数据结构
(5)value大小:redis最大可以达到1GB,而memcache只有1MB
以上就是php中级面试题的部分展示,相对基础面试题而言,大家已经感受到题目难度的提升。大家对于其中不懂的地方,可以对照参考答案或者课后找寻资料解决。更多php学习指路:php教程