饿了么php面经

  1. 请设计一个数据结构可以实现无限级子菜单的树型菜单功能并提供菜单生成算法,用UML描述设计并写出相关PHP代码
  2. 如何实现每天0点钟重新启动服务器。
  3. 简述分库与分表设计?分库分表带来的分布式困境与对应之策有哪些?
  4. 函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换
  5. post请求时,application/x-www-form-urlencoded和mulipart/form-data的区别
  6. 数据库优化有哪些? 分别需要注意什么?
  7. 谈一谈对慢查询的分析?MySQL常用的优化方法有哪些?
  8. 用foreach把$arr=array
  9. 一个10G的表,你用php程序统计某个字段出现的次数,思路是?
  10. Redis有哪些结构时间复杂度较高
  11. 容器 循环依赖
  12. 数组内置的排序方法有哪些?
  13. PHP的is_writeable
  14. 观察者模式是如何实现的?工厂模式是如何实现的?适配器模式是如何实现的?
  15. 和strtoupper
  16. 函数存在Bug,无法准确判断一个目录/文件是否可写,请写一个函数来判断目录/文件是否绝对可写
  17. 一个php文件的解释过程是? 一般加速php有哪些? 提高php整体性能会用到哪些技术?
  18. 说一下快排的过程,写一下伪代码
  19. 抽象类中 抽象方法和普通方法的区别

编程题

  • 实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)
  • 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)
  • 必须 原地 修改,只允许使用额外常数空间。

示例 1:

输入:nums = [1,2,3]
输出:[1,3,2]

示例 2:

输入:nums = [3,2,1]
输出:[1,2,3]

示例 3:

输入:nums = [1,1,5]
输出:[1,5,1]

示例 4:

输入:nums = [1]
输出:[1]