php 问题_interview

IM系统数据库设计

http://www.52im.net/thread-812-1-1.html

https://juejin.im/post/5bcf3d4e51882577c758d0df

数据统计sql语句 子查询...

-----------------------------------------------------------------------------------------------

1. jsonp $.ajax写法

 

2.mysql innodb myisam区别

3.redis优化方法

4. mysql 索引 B+tree

5. git  reset HEAD

6. crontab    分 时 日 月 星期 user command

7. select/epoll

 

8.mysql数据类型

9.邮箱正则表达式

^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

10.redis/memcache各自 优缺点

 

HttpHeader的一些字段, 主动断开连接是什么字段?

Connection: close  (https://www.jianshu.com/p/91f6f7372333)

ORM原理

MySQL连接池

路由、controller URL分发原理

php框架主要帮助我们做了哪些事情?

redis在项目中的应用

单点登录实现

用哪些组件输出log,在哪些地方打什么样的log?

------------------------------------------------------------------------------

绝对路径转化为相对路径

<?php
/**
 * $path相对于$base的相对路径
 * @param string $base
 * @param string $path
 */
function abs2rel(string $base, string $path) {
    if (is_dir($base)) {
        $base = rtrim($base, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . ".";
    }
 
    $a = explode(DIRECTORY_SEPARATOR, $base);
    $b = explode(DIRECTORY_SEPARATOR, $path);
 
    $d = [];   // $path push
    $i = count($a)-1;
 
    $sliceEquals = function($a, $b, $j) {
        if ($j >= count($a) || $j >= count($b)) {
            throw new Exception('$j out of range');
        }
        for ($i = $j; $i >= 0; $i--) {
            if (strcmp($b[$i], $a[$i])!==0) {
                return false;
            }
        }
        return true;
    };
    // 找到a,b数组元素相同的下标
    while (array_pop($a)) {
        $i = count($a)-1;
        if (isset($b[$i])) {
            if ($sliceEquals($a, $b, $i)) {
                break;
            }
        }
        array_push($d, "..");
    }
    // 从首个不同元素开始
    for ($i+=1; $i < count($b); $i++) {
        array_push($d, $b[$i]);
    }
    return ".".DIRECTORY_SEPARATOR.implode(DIRECTORY_SEPARATOR, $d);
}


联合索引哪些有效

如果对多列进行索引(组合索引),MySQL仅能 对索引最左边的前缀 进行有效的查找。


链表逆顺序 包含头节点
数组合并哪几种方式 

------------------------------------------------------------------------------

1. 负载均衡    [TO BE DONE]

 

2. 索引的建立 和查询 以及索引场景建立

   alter table `config` add index idx_config_name(`name`);

  show index from `config`;

 

3. thinkphp的路由    [ONGOING]

   https://www.kancloud.cn/manual/thinkphp5/118030

   ./application/route.php

 

4.PHP中一些常用的spl函数   [TO BE DONE]

   http://php.net/manual/en/book.spl.php

 

5.mysql的主从分离 对id进行hash 理解hash

 

6.linux的一些常用命令 熟悉linux 

7. 递归 n!  

8. php单例模式

9. mysql 分表

 

10. CAS认证, ucenter认证

11.SQL注入,是怎么注入的,自己写一个能够实现sql注入的代码

12.htmlspecialchars(), strip_tags(), add_slashes()详细用法

13.php链式操作

14.php7新特性

15.jsonp

16.RSA非对称加密算法

17. 一元秒杀, (大量访问, 以及秒杀思路)

18.手机充值卡有一串数字(3567892099)后面用户如果在后面恶意的一个一个试充值数字,

    恰好出来一个, 怎么防止这种情况的发生

19. 银行, 支付宝都是用数字证书也就是ssl(https)基于传输层的加密

20. XSS攻击预防

21.restful

22.抽奖算法

23.加密认证

24.ajax方法中get和post的区别

25.百度数据爬虫的思路

26.微服务

27.sphinx全文检索的原理

---------------------------------------------爬虫相关的问题---------------------------------------------------

* php程序发送http请求

- curl

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://www.baidu.com',
    CURLOPT_HEADER => 1,
    CURLOPT_RETURNTRANSFER => 1
]);

$data = curl_exec($ch);
curl_close($ch);

echo $data.PHP_EOL;

-socket

 


* mysql存储引擎 myisam / innodb  select count(*) ... 用哪个存储引擎快

  MyISAM会保存表的总行数,select count(*)在MyISAM存储引擎中执行,MyISAM只要简单地读出保存好的行数即可。

  InnoDB存储引擎不会保存表的具体行数,因此,在InnoDB存储引擎中执行这段代码,InnoDB要扫描一遍整个表来计算有多少行。

 

* mysql 函数pconnect/connect

  mysql_pconnect — Open a persistent connection to a MySQL server


* linux shell 定时器 脚本

  crontab


* 投票限制 每人每分钟3次,每人每小时10次; 每个IP每分钟30次,每天100次


* 爬虫架构


* php实现一个跨请求的队列 (redis?)


* 上传文件安全限制

 

* "Hello world Blog Control" 字符串按空格分隔,分成数组,全部转化为小写,按字母顺序排

  (php sort 和javascript的sort方法不同 不传回调用SORT_STRING )

php 问题_php_02php 问题_redis_03

<?php
class TestArrayObject {
  private $s = "";
   
  public function __construct($s) {
    $this->s = $s;
  }
   
  public function run() {
     
    $ao = new ArrayObject(array_map(function($word) {
      return strtolower($word);
    }, explode(' ', $this->s)));
     
    $ao->uasort(function($a, $b) {
      return strcmp($a, $b);
    });
 
    return $ao->getArrayCopy();
  }
   
}
 
$o = new TestArrayObject("Hello world Blog Controll Hola Hi Shalom");
$a = $o->run();
var_dump($a);

TestArrayObject.php  

  

---------------------------------------------/爬虫相关的问题---------------------------------------------------

题目截图:

php 问题_mysql_04

* 学习路线图

modern-backend-develop-2018

php 问题_php_05