百度地图php面试题

百度地图的php面试题,纯口头交流,无笔试题,题目不分先后,凭记忆写的

1、include 和 require 的区别

 (1)require 相对 include 的效率会更高

 (2)引用的文件不存在时,require会报致命错误,结束程序运行,而include则只会报warning

 (3)在同一php文件中解释过一次后,不会再解释第二次。而include却会重复的解释包含的文件。所以当php网页中使用循环或条件语句引入文件时,"require"则不会做任何的改变,当出现这种情况,必须使用"include"命令来引入文件。

2、http请求中会包含什么内容

 (1)客户端信息

 (2)URL

 (3)协议版本

 (4)MIME 信息包括请求修饰符

 (5)请求内容

3、redis怎么实现锁

    利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字foo的锁,客户端使用下面的命令进行获取: 
    SETNX lock.foo <current Unix time + lock timeout + 1> 

  • 如返回1,则该客户端获得锁,把lock.foo的键值设置为时间值表示该键已被锁定,该客户端最后可以通过DEL lock.foo来释放该锁。

  • 如返回0,表明该锁已被其他客户端取得,这时我们可以先返回或进行重试等对方完成或等待锁超时。


4、mq中如何避免重复消费

问题1:消息重复消费 
描述:用户在页面停止查询时,会导致消费者进程被杀死,因此ACK状态码未反馈至MQ,从而消息一直存留在MQ中,当新的消费者启动时会重新消费; 
解决方案:消费者每次执行查询前,首先在DB上查询任务的执行状态,若处于「取消/失败/成功」则表示已经由其它消费者消费过,那么直接返回ACK状态码给MQ,将消息从MQ中移除;

https://blog.csdn.net/yeweiouyang/article/details/74943278

5、get和post请求长度区别

get:

  Microsoft Internet Explorer (Browser)

  IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。

  通过上面的数据可知,为了让所有的用户都能正常浏览, URL最好不要超过IE的最大长度限制(2083个字符),当然,如果URL不直接提供给用户,而是提供给程序调用,这时的长度就只受Web服务器影响了。

  注:对于中文的传递,最终会为urlencode后的编码形式进行传递,如果浏览器的编码为UTF8的话,一个汉字最终编码后的字符长度为9个字符。

  因此如果使用的 GET 方法,最大长度等于URL最大长度减去实际路径中的字符数。

post:

  理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。

  如:在Tomcat下取消POST大小的限制(nginx默认8M);

6、mysql 如何配置主从

https://jingyan.baidu.com/article/ff411625c4c60f12e48237f5.html

7、session 和 cookie 有什么区别,如何共享session  

  1. Cookie 在客户端(浏览器),Session 在服务器端
  2. Session 比 Cookie 安全性更高
  3. 单个 Cookie 保存的数据不能超过 4K
  4. Session 是基于 Cookie,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)

  共享session可以通过把session存在redis 或者memacache 中,读取session时从缓存读取。

8、json和jsonp的区别

json是数据格式,jsonp是jsonp,即 json padding,一种非官方跨域数据交互协议,原理就是利用 <script> 标签没有跨域限制来达到与第三方通讯的目的。

9、mysql如何优化

  优化mysql

  1. 合理的设计表结构、表索引
  2. 不在数据库中做运算
  3. 控制单表数据量
  4. 数据量过大进行读写分离,使用INNODB存储引擎
  5. 不再数据表中存储图

  优化sql:

  1. 避免使用 Like 模糊查询
  2. 只列出需要查询的字段,而不是所有
  3. 不在 MySQL 中进行运算,减轻 MySQL 的压力
  4. 经常查询的字段,创建合适的索引,提高查询效率

10、简述数据库第一第二第三范式

   https://blog.csdn.net/dove_knowledge/article/details/71434960

11、简单描述快排,快排的时间复杂度

  最慢n^2 最快nlogn 平均nlogn

12、常见的负载均衡模式,名字

  a. Round Robin: 对所有的backend轮训发送请求,算是最简单的方式了,也是默认的分配方式;

  b. Least Connections(least_conn): 跟踪和backend当前的活跃连接数目,最少的连接数目说明这个backend负载最轻,将请求分配给他,这种方式会考虑到配置中给每个upstream分配的weight权重信息;

  c. Least Time(least_time): 请求会分配给响应最快和活跃连接数最少的backend;

  d. IP Hash(ip_hash): 对请求来源IP地址计算hash值,IPv4会考虑前3个octet,IPv6会考虑所有的地址位,然后根据得到的hash值通过某种映射分配到backend;

  e. Generic Hash(hash): 以用户自定义资源(比如URL)的方式计算hash值完成分配,其可选consistent关键字支持一致性hash特性;

13、印象最深的项目,以及遇到的困难

14、打开tcp关闭tcp分别需要几次挥手

  三次握手,两次挥手

15、join 和in 优先用哪个

  优先join 特殊情况用in

猜你喜欢

转载自www.cnblogs.com/zeoblog/p/9168591.html