2018 Spring Recruitment PHP Резюме интервью | Nuggets Technical Papers

интервью Redis PHP

Это интервью — не только надежда начать новое путешествие и познать мир, но и процесс обнаружения собственных недостатков и возможность определить направление дальнейшего развития (обучения).

подготовка к интервью

Резюме, которое расскажет о вас интервьюеру, уверенность в себе, поехали

Mind-map

PHP

php лучший язык в мире!

База

  1. Разница между сеансом и файлом cookie
    Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中

    Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
  1. PHP7Вы использовали его и знаете, какие новые функции
    PHP7在性能方面实现跨越式的提升,新的操作符,统一变量语法等等

    参考[PHP7的文章](https://blog.csdn.net/u011957758/article/details/73320083)
  1. магическая переменная
    问了__dir__代表的含意,这个是回答文件所在的目录

    参考[PHP 手册之魔术常量](http://php.net/manual/zh/language.constants.predefined.php)
  1. магический метод
    这算是经常会问到的一个题目了,常用的都记得,忽然问到__invoke()就懵了
    __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 

    参考[PHP 手册之魔术方法](http://www.php.net/manual/zh/language.oop5.magic.php)

Структуры данных и алгоритмы

  1. структура данных стека
    只要能用代码实现出栈数据结构即可

    参考[栈数据结构文章](http://www.jb51.net/article/130272.htm)
  1. Пузырьковая сортировка
    只要能用代码实现出冒泡排序即可

    参考[冒泡排序文章](http://www.jb51.net/article/24497.htm)
  1. Разница между полным бинарным деревом и полным бинарным деревом
    只有最下面的两层结点度能够小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树才为完全二叉树
    而一棵深度为h且有 2^h-1个结点的二叉树即为满二叉树

    参考[完美二叉树, 完全二叉树和完满二叉树](https://blog.csdn.net/HaoDaWang/article/details/78065162)

Связанные с архитектурой

  1. В чем разница между Laravel и ThinkPHP и на что мне жаловаться на laravel?
    我从路由,中间件到控制器,数据访问,视图等层面上介绍了不同
    吐槽的话可能相对于一些项目,laravel有点‘重’

    参考[tp3.2和tp5,以及laravel的区别](https://blog.csdn.net/qq1690194137/article/details/79794944)
  1. [Вы выпустили свой собственный пакет с композитором] (модульная разработка PHP на основе Composer)
    我回答没有,只是了解过
    面试官就说他们的框架是自己在Discuz的基础上二次开发的框架,在他优秀的基础上把composer依赖管理也都引进blabla

    参考[基于 Composer 的 PHP 模块化开发](https://zhuanlan.zhihu.com/p/27943241)
  1. Разговор о понимании MVC
    结合项目说明模板,视图,控制器之间的关系和基本的构成

    参考[MVC](https://baike.sogou.com/v25227.htm)

защита

  1. Атака с использованием межсайтовых сценариев XSS
  2. DDOS-атака на трафик
  3. Атака с подделкой межсайтовых запросов CSRF
  4. SQL-инъекция
    在前端表单用户输入进行控制或限制
    有后端传参数和数据时进行过滤等等

    参考[常见的 CSRF、XSS、sql注入、DDOS流量攻击](https://blog.csdn.net/echo_laodong/article/details/79254552)

проект

  1. Как решить проблему параллелизма в проекте
    我的解决办法先是前端控制有效请求,例如一分钟才正常请求一次
    接着后端同样过虑无效请求,接着接操作放进队列中实现

    有个面试官问,你这个队列是阻塞的吗,如果真的同时两个用户购买,两个用户等待完成,他们还是用同一个线程完成,有没有考虑用其它方式实现
    我说无,他就说可以用锁的机制,第二个等待第一个完成,一个接一个

    参考[php高并发解决的一点思路](https://blog.csdn.net/mkbug/article/details/71455725)
    相关的还有swoole扩展,可以了解下
  1. Процесс реализации платежа WeChat
    1. H5页面发起支付请求,请求生成支付订单
    2. 调用统一下单API,生成预付单
    3. 生成JSAPI页面调用的支付参数并签名
    4. 微信浏览器自动调起支付JSAPI接口支付
    5. 确认支付
    6. 异步通知商户支付结果,商户收到通知返回确认信息
    7. 返回支付结果,展示支付信息给用户

    参考[微信支付时序图](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4)
  1. Простая функция входа и регистрации
    各个框架考虑的方面不一样,这就按自己的理解写出相应的代码就好
  1. Как спроектировать торговый центр
    我是先给自己限定了一个B2C的商城,然后从数据表开始,接着简单介绍前端和后端实现逻辑

    参考[PHP网上商城网站的设计与实现](http://www.docin.com/p-190062065.html)

MYSQL

Оптимизация MySQL в основном является главным приоритетом, особенно технология тестирования

База

  1. В чем разница между InnoDB и MyISAM
    InnoDB提供事务处理,行级锁,支持外键,支持多种行格式
    MyISAM只支持表级锁,全文索引,堆表

    参考[MyISAM与InnoDB区别](https://blog.csdn.net/xifeijian/article/details/20316775)
  1. Каковы особенности сделок
    原子性、一致性、隔离性、持久性
  1. уровень изоляции транзакций
    未提交读、已提交读、可重复读、可串行化

    参考[Innodb中的事务隔离级别和锁的关系](https://tech.meituan.com/innodb-lock.html)
  1. Есть поля таблицы O_Id, OrderDate, OrderPrice, Customer, хотим найти клиентов у которых общая сумма заказа меньше 2000
    SELECT Customer,SUM(OrderPrice) FROM Orders
    GROUP BY Customer
    HAVING SUM(OrderPrice)<2000
  1. Запросите данные таблицы учеников, если их больше 60, это пропуск, иначе не пропуск
    select 分数,类别=Case
    WHEN 分数>=60 THEN '及格'
    ELSE '不及格'
    END
    from 成绩表
  1. Запросите количество студентов и имена студентов, которые не закончили все курсы
    SELECT a.SNO ,a.SNAME  
    FROM student a  
    WHERE a.`SNO` NOT IN  
        ( SELECT b.`SNO` FROM SC b  
        GROUP BY b.`SNO` HAVING COUNT(*) =  
            ( SELECT COUNT(*)  FROM course)
        );  

оптимизация

  1. «выбрать * от студента, где имя = «красный»», «выбрать * от студента, где имя = «синий»», оптимизированный оператор
    select name from student where name='red'
    union
    select name from student where name='blue'

    如果用or条件, myisam表能用到索引, innodb不行。 
    innodb用UNION替换OR (适用于索引列) 
  1. Как вы обычно оптимизируете свою базу данных
    查询缓存、EXPLAIN、(联合)索引、使用固定长度静态表
    
    这问题都能写一本书了,参考[MySQL性能优化的最佳21条经验](https://blog.csdn.net/kaka1121/article/details/53395587)

сервер

защита

Как защитить сервер

    仅开放有限端口,限制登录IP,限制登录帐号

    也是可以定一本书的问题,可以根据项目回答,参考[服务器防护知识点汇总](https://blog.csdn.net/Sasoritattoo/article/details/9324149)

протокол

В чем разница между Get и Post

    Get的参数包含在URL,GET请求会被浏览器主动cache,是url编码,有字符限制参数为ASCII字符
    Post 通过request body传递参数,且有多种编码方式

NginX

Какова обработка запросов php-скрипта при настройке nginx

    默认配置的是转发到FastCGI处理

Redis

  1. Какие данные вы используете Redis для кэширования
    跟据项目来说自己缓存的一些经常要用到的数据
  1. Как Redis обеспечивает постоянство и настраивает частоту обновления
    配置aof持久化,用默认的每秒刷新aof文件

    参考[redis 的两种持久化方式及原理](https://blog.csdn.net/yinxiangbing/article/details/48627997)
  1. Является ли Redis многопоточным?
    单线程(我竟然回答是多线程,233)

    参考[Redis单进程](http://www.cnblogs.com/syyong/p/6231326.html)
  1. Как Redis настраивает один главный и несколько подчиненных устройств и сколько времени это занимает?
    可以用Redis官方集群方案,具体没有实践过,可能要花几周时间来完成

    参考[Redis集群方案](https://www.zhihu.com/question/21419897)

управление кодом

Вы использовали git? Как решить, когда два человека отправляют неправильный код

    用过git提交代码,发生这种情况可以先将远程的代码git pull到本地,然后将冲突的代码或Git标记内容修改正确,然后重新提交代码

    参考[git使用经验](https://zhuanlan.zhihu.com/p/22666153)

разное

Зачем оставлять

    机智回答,稍微提了一下公司或自身的事<del>钱少事多家远</del>

твоя идеальная команда

    对技术热情,积极解决问题,共同合作

    参考[某种理想的团队](https://zhuanlan.zhihu.com/p/19968752)

планирование карьеры

    前端深入,后端深入,数据优化分析采集,服务器渗透blabla

вопрос, чтобы задать

    一般都会问公司有什么项目,技术架构,有无盈利等

У разных компаний разные технологические стеки и разные проблемы.Некоторые люди будут спрашивать о конкретном блокировочном решении проблемы с очередью.Некоторые уделяют больше внимания эффективности проекта, некоторые также обращают внимание на конструкцию сервера, нужно ли строить свою собственную структуру и Для понимания популярных фреймворков вы сможете найти нужное направление развития в процессе.

постскриптум

7 предложений от 9 компаний за 5 дней, чувствую себя нормально, большинство компаний зададут развернутые вопросы по пунктам резюме во время собеседования. Во время интервью вы можете увидеть широту технологий (сколько проектов или навыков вы испытали) и глубину технологий (оптимизация данных, понимание и производство фреймворка, атака на сервер и проникновение в защиту). Я надеюсь, что каждый сможет продолжить практику и изучайте технологии по мере развития проекта Соус. \(•ㅂ•)/♥ Вместе~