Лучшие практики PHP-интервью в Китае
Английская версия (сторонняя)
В этом хранилище в основном обобщаются те знания, которые часто задают на собеседованиях по PHP внутри страны. Он лишь целенаправленно указывает на точки знаний, и вам нужно найти соответствующую информацию и систематически изучать ее самостоятельно. Надеюсь, вы сможете понять не только то, что это такое, но также почему и принципы, лежащие в его основе.
Если у вас есть очень систематизированная информация по соответствующим пунктам знаний, пожалуйста, пиарьте и добавляйте ссылки. Не рекомендуется использовать форк, информация будет обновляться в любое время.
Если вы сейчас находитесь в следующих ситуациях, эта информация вам очень подойдет:
- Планирую сменить работу, но не знаю с чего начать.
- Технология столкнулась с узким местом, и я не знаю, чему учиться.
- Готовы изучать PHP, но не знаете, насколько глубока эта область?
Основы
- Понимать большинство функций манипулирования массивами.
- Разница между функциями обработки строк и функциями серии mb_
- & Цитаты в сочетании с анализом случаев
- Разница между == и ===
- Разница между isset и пустым
- Понимание всех магических функций
- Различия между static, $this и self
- Разница между частным, защищенным, публичным и окончательным
- ООП-мышление
- Соответствующие сценарии использования абстрактных классов и интерфейсов.
- Что такое черта?
- Различия между echo, print и print_r (различение выражений и операторов)
- Разница между __construct и __destruct
- руководство по статическим функциям (различение классов и функций), SOF
- Функция __toString()
- Разница между одинарными
'
и двойными "
- Общие коды состояния HTTP, что они означают?
- Что значит 301, значит 404?
Расширенная глава
- Автозагрузка, принцип Composer PSR-4, принцип
- Совместное использование сеансов, время выживания
- Обработка исключений
- Как перебирать объект foreach
- Как разместить объект операции в массиве
$obj[key];
- Как функционализировать объект
$obj(123);
- Что такое доходность? Давайте поговорим о сценарии использования доходности.
- Что такое ПСР, ПСР-1, 2, 4, 7
- Как получить IP-адреса клиента и IP-адреса сервера
- IP-адрес клиента
- IP-адрес сервера
- Понять концепцию прозрачной передачи реального IP-адреса через прокси-сервер.
- Как включить запросы исключений PHP
- php.ini включает
display_errors
и устанавливает уровень error_reporting
- Во время выполнения используйте
ini_set(k, v);
- Как вернуть 301 редирект
- [ВНИМАНИЕ] Будьте осторожны, чтобы сценарий продолжал выполняться после установки 301. Не думайте, что следующее не будет выполнено. При необходимости используйте
die
или exit
.
- Как получить путь установки расширения
-
phpinfo();
поиск по странице extension_dir
- Командная строка
php -i |grep extension_dir
-
echo ini_get('extension_dir');
- Принцип сравнения строк и чисел. Обратите внимание на восьмеричную систему, начинающуюся с 0, и шестнадцатеричную систему, начинающуюся с 0x.
- Размер сравнения строк, слева (старший бит) направо, посимвольное сравнение ASCII
- Что такое заголовок спецификации и как его удалить?
-
0xEF
, 0xBB
, 0xBF
- Обнаружить, удалить
- Что такое МВК
- Принцип реализации внедрения зависимостей
- Как выполнить команду асинхронно
- Что такое шаблонизатор, какие проблемы он решает и принципы его реализации (Smarty, Twig, Blade)
- Как реализовать цепную операцию
$obj->w()->m()->d();
- Использование инструментов отладки производительности Xhprof и Xdebug.
- В чем разница между индексным массивом
[1, 2]
и ассоциативным массивом ['k1'=>1, 'k2'=>2]
- Как использовать кеш и сценарии
Упражняться
- Учитывая двумерный массив, отсортируйте его по определенному полю.
- Как определить тип загружаемого файла, например: разрешена загрузка только в формате jpg
- Обменять значения двух переменных без использования временных переменных
$a=1; $b=2;
=> $a=2; $b=1;
- При конвертации китайского языка в strtoupper отображаются искаженные символы. Как решить эту проблему?
php echo strtoupper('ab你好c');
- Различия между Websocket, длинным опросом и событиями, отправленными сервером (SSE)
- Что означает ошибка «Заголовки уже отправлены» и как ее избежать
Алгоритм
- Быстрая сортировка (от руки)
- Пузырьковая сортировка (от руки)
- Бинарный поиск (понимание)
- Найти алгоритм КМП (понять)
- Поиск в глубину и вширь (понимание)
- Алгоритм устранения кэша LRU (помните, что Memcached использует этот алгоритм)
Структура данных (понимание)
- Характеристики кучи и стека
- очередь
- Хэш-таблица
- связанный список
Сравнение
- Разница между файлами cookie и сеансом
- Разница между
GET
и POST
- Разница между
include
и require
- Разница между
include_once
и require_once
- Разница между Memcached и Redis
- Механизмы хранения данных MySQL и их различия (вы обязательно спросите о разнице между MyISAM и Innodb)
- Разница между HTTP и HTTPS
- Разница между Apache и Nginx
- Разница между define() и const
- Каковы различия между трейтами и интерфейсами и какие болевые точки решают трейты?
- Разница между Git и SVN
База данных
- MySQL
- CRUD
- ПРИСОЕДИНЕНИЕ, ЛЕВОЕ СОЕДИНЕНИЕ, ПРАВОЕ СОЕДИНЕНИЕ, ВНУТРЕННЕЕ СОЕДИНЕНИЕ
- СОЮЗ
- Комбинация GROUP BY + COUNT + WHERE
- Часто используемые функции MySQL, такие как: now(), md5(), concat(), uuid() и т. д.
-
1:1
, 1:n
, n:n
применимы к каждому сценарию. - Понять, что такое триггер, и описать сценарий использования.
- Методы оптимизации базы данных
- Индекс, индекс сустава (условие попадания)
- Подбаза данных и подтаблица (
水平分表
и垂直分表
) - Раздел
- Может использовать
explain
для анализа проблем с производительностью SQL и понимания значения каждого параметра.- Сосредоточьтесь на понимании
type
, rows
, key
- Slow Log (для чего нужен, когда нужен)
- MSSQL (понимать)
- Запросить последние 5 фрагментов данных
- NOSQL
- Redis, Memcached, MongoDB.
- Сравнение и применимые сценарии (сравнение можно проводить по следующим параметрам)
- упорство
- Поддерживает несколько типов данных
- Доступен многоядерный процессор
- Механизм устранения памяти
- КластерКластер
- Поддержка SQL
- Сравнение производительности
- поддержка вопросов
- Сценарии применения
- Что вы использовали для решения какой проблемы раньше и почему выбрали именно это?
Сервер
- Просмотр такой информации, как процессор, память, время, версия системы и т. д.
- найти, grep, чтобы найти файлы
- awk обрабатывает текст
- Просмотр каталога, в котором находится команда
- Вы когда-нибудь сами компилировали PHP? Как включить функцию readline
- Как проверить использование памяти и процессора процессом PHP
- Как добавить расширение в PHP
- Измените место хранения сеанса PHP и измените параметры конфигурации INI.
- Какие существуют типы балансировки нагрузки? Выберите тот, который вам знаком, и объясните его принципы.
- Как синхронизируется MS репликации master-slave базы данных? Толкать или тянуть? Будет ли оно рассинхронизировано? что делать
- Как обеспечить доступность данных, чтобы даже в случае их удаления их можно было восстановить на уровне минут. что вы будете делать.
- Слишком много подключений к базе данных, превышающее максимальное значение. Как оптимизировать архитектуру. Как его можно удобно обработать?
- 502 Какова возможная причина? Как устранить ошибку 504?
Архитектура
- Частичная эксплуатация и обслуживание (понимание):
- Балансировка нагрузки (Nginx, HAProxy, DNS)
- Репликация Master-Slave (MySQL, Redis)
- Избыточность и резервное копирование данных (инкрементальный и полный принципы MySQL)
- Мониторинг и проверка (два аспекта выживания и доступности услуг)
- MySQL, Redis, Memcached Proxy, назначение и принцип кластера
- Шардинг
- Кластер высокой доступности
- Рейд
- Компиляция исходного кода, настройка памяти
- кэш
- Всякий раз, когда вы сталкиваетесь с ситуациями, когда в работе необходимо кэширование, кратко опишите, почему.
- Поиск решений
- Настройка производительности
- Решения для мониторинга в различных измерениях
- Решение для централизованной обработки сбора журналов
- интернационализация
- Проектирование базы данных
- статическое решение
- Нарисуйте общие диаграммы архитектуры PHP-приложений.
Рамки
- ThinkPHP (TP), CodeIgniter (CI), Zend (серия, не относящаяся к ООП)
- Яф, Phalcon (расширение C)
- Yii, Laravel, Symfony (чистая серия ООП)
- Свул, Workerman (фреймворк сетевого программирования)
- В кадре сравнения выделяется несколько точек направления
- Это чистый ООП?
- Метод загрузки библиотеки классов (напишите свой собственный стандарт автозагрузки или композитора)
- Направление юзабилити (базовый фреймворк CI, Laravel — фреймворк с высокой эффективностью разработки и сколько в нем базовых компонентов)
- Черный ящик (по сравнению с системой расширения C)
- Скорость работы (например: Laravel загружает много вещей)
- Использование памяти
шаблон проектирования
- Шаблон синглтон (выделено)
- Заводской шаблон (ключ)
- Модель наблюдателя (выделено)
- Внедрение зависимостей (выделено)
- Шаблон декоратора
- режим прокси
- Комбинированный режим
Безопасность
- SQL-инъекция
- XSS и CSRF
- Входная фильтрация
- Безопасность файлов cookie
- Отключить функции
mysql_
- Что необходимо сделать при хранении паролей пользователей в базе данных для обеспечения безопасности?
- Код подтверждения. Проблема с сеансом.
- Secure Session ID (чтобы даже после перехвата его нельзя было смоделировать и использовать)
- Безопасность разрешений каталога
- Содержит локальные и удаленные файлы
- PHP-скрипт загрузки файла
- Функция
eval
выполняет скрипт -
disable_functions
отключает функции высокого риска - Независимые пользователи и группы FPM, предоставляющие определенные разрешения для каждого каталога.
- Поймите разницу между Hash и Encrypt
Продвинутый уровень
- Базовая реализация массива PHP (HashTable + Связанный список)
- Копирование по принципу записи, когда в GC
- Модель процесса PHP, метод взаимодействия процесса, разница потоков процесса
- В чем заключается основной принцип доходности?
- Принцип подготовки PDO
- В чем разница между PHP 7 и PHP 5
- Применимые сценарии Swoole и методы реализации сопрограмм
Внешний интерфейс
- Получайте узлы и атрибуты DOM в собственном коде.
- коробочная модель
- CSS-файлы, теги стиля, приоритет атрибутов встроенного стиля.
- Порядок работы HTML и JS (страница JS сверху вниз)
- Операции с массивами JS
- Тип решения
- этот объем
- .map() и этот конкретный анализ сценария использования
- Чтение и запись файлов cookie
- Операции JQuery
- Ajax-запрос (разница между синхронным и асинхронным) случайное число запрещает кеширование
- Каковы преимущества Bootstrap?
- Междоменный запрос N решений
- Новая технология (понять)
- ES6
- Модульный
- Пакет
- Инструменты сборки
- vue, реакция, веб-пакет,
- интерфейс MVC
- оптимизация
- Ограничение одновременного количества браузеров для одного доменного имени
- Статический кэш ресурсов 304 (принцип If-Modified-Since и Etag)
- Объедините несколько маленьких значков и используйте технологию позиционирования, чтобы уменьшить количество запросов.
- Статические ресурсы объединяются в один запрос и сжимаются.
- CDN
- Технология отложенной загрузки статических ресурсов и технология предварительной загрузки
- поддерживать жизнь
- Оптимизация CSS в начале и JS в хвосте (принцип)
Сеть
- IP-адрес для INT
- Что означает 192.168.0.1/16?
- Какова основная функция DNS?
- Разница между IPv4 и v6
Сетевое программирование
- Процесс трехстороннего установления связи TCP
- Различия между TCP и UDP, применимые сценарии соответственно
- Есть ли способ обеспечить высокую доступность UDP (понимать)
- Как решить проблему липких пакетов TCP?
- Зачем нужно сердцебиение?
- Что такое долгое соединение?
- Насколько безопасен HTTPS?
- Разница между потоками и датаграммами
- Существует несколько способов взаимодействия между процессами, какой из них самый быстрый?
- Что происходит
fork()
?
Глава API
- Что такое RESTful
- Как сделать запросы
DELETE
совместимыми с браузерами, которые не поддерживают запросы DELETE
- Какова основная функция
APP_ID
APP_SECRET
распространенных API? Объясните процесс - Как гарантировать, что данные в запросах API не будут подделаны?
- Разница между JSON и JSONP
- Разница между шифрованием данных и проверкой подписи
- Что такое РСА
- Как решить проблему совместимости версий API
- Ограничение тока (деревянное ведро, ведро для жетонов)
- В каких сценариях в основном используется OAuth 2?
- JWT
- В чем разница между
json_encode(['key'=>123]);
и return json_encode([]);
Какие проблемы могут возникнуть? Как решить
Бонусные баллы
- Понимать общие языковые особенности и применимость к различным сценариям.
- PHP против Голанга
- PHP против Python
- PHP против JAVA
- Узнайте о разработке расширений PHP
- Владеешь С
заявление
Эта информация не предназначена для какой-либо компании, и мы не несем ответственности за влияние этой информации на вас.
Удачи
Связанные ссылки
https://blog.csdn.net/l269798518/article/details/82428601