Вопросы для интервью по программированию сокетов и многопоточности
Пожалуйста, кто-нибудь может рассказать мне о вопросах, которые могут быть заданы в интервью по темам ниже.
- Программирование сокетов
- Multi-Threading
Спасибо за помощь всем, кто предоставляет свое время
Ответы
Ответ 1
Как менеджер по найму, мой любимый сетевой вопрос, который нужно задать, был следующим:
Представьте, что пользователь, сидящий на Ethernet-подключенный ПК. У него есть браузер открытый. Он печатает "www.google.com" в адресной строке и нажмите Enter.
Теперь скажите мне, что первый пакет для отображается на Ethernet.
Возможные ответы (различной правильности) включают:
- Я не знаю.
- Запрос HTTP
пакет.
- TCP-пакет TCP.
- DNS
запросить пакет.
- ARP-пакет.
- Это зависит.
Каждый из ответов показывает что-то о понимании человеком сети в целом и IP и TCP в частности. Последующая дискуссия может рассказать об их понимании. (Предполагая, конечно, что у эксперта есть определенный опыт в этой области).
Ответ 2
Программирование сокетов
- Разница между UDP и TCP.
- Разница между асинхронными и синхронными сокетами.
- Что такое пакет.
- Как вы определили, не вызвал ли пакет неправильный формат.
- Как вы определяете, где заканчивается один пакет и где начинается другой.
- Что такое порт.
Многопоточность
- Какие примитивы синхронизации вы знаете, скажите разницу между ними.
- Что такое тупик и что такое livelock.
- Что такое состояние гонки.
- Что означает термин "блокировка".
- Каков наилучший способ прекратить поток.
- Почему вы не должны использовать функции TerminateThread-esque.
Ответ 3
Несколько примеров вопросов:
- Асинхронный ввод-вывод, один из подходов состоит в том, чтобы задать вопрос, по которому разные клиенты могут запрашивать сервер, и может привести к условиям гонки, если они реализованы через несколько потоков (например, кэширование результатов). Если собеседник идет по нескольким темам, поднимите условия гонки и посмотрите, указывают ли они асинхронный ввод-вывод в качестве опции.
- В чем разница между мертвым замком и live-lock?
- Прототип веб-сервера
- Прототип веб-клиента
- Что такое эфемерные порты; альтернативно описывают приложение нагрузки нагрузки, которое обращается к серверу с 1000 запросами в секунду, но через несколько секунд прекращает делать запросы к серверу; через 2-4 минуты приложение снова начинает поражать сервер с 1000 запросами.
- Напишите потокобезопасный производитель/потребительский буфер, к которому можно получить доступ один или несколько производителей/потребителей
- В чем разница между клиентом/сервером и p2p
- Это больше сетей, но полезно знать, что происходит под вызовами сокета: описать трехстороннее рукопожатие TCP
- Что такое алгоритм nagle? Когда это желательно? Как бы вы отключили это?
- Вариант Linux: при написании демона, каковы базовые строительные блоки (например, разворачивание ребенка и убийство родителя, закрытие stdin/stdout/stderr и т.д.).
- Вариант Windows: при написании службы Windows, каковы основные строительные блоки.
- Создайте протокол для обмена данными между клиентом и сервером для отправки аудио/видео. Как продлить его для следующей последней/самой большой функции.
- Как работают окна TCP и что я могу сделать для оптимизации производительности приложения, которое выполняет множество больших чтений на континентах.
Ответ 4
Что такое тупик и как вы его избегаете?
Некоторые вопросы программирования сокетов.
Ответ 5
Вы спрашиваете, потому что вас затащили, чтобы взять интервью у кого-то, кто будет в вашей команде? Задавайте вопросы, которые основаны на реальных проблемах, с которыми вам пришлось столкнуться в повседневной работе. Подумайте о последней ошибке, связанной с программированием сокетов, и включите ее в вопрос интервью.
Теория хорошая, но вы хотите знать, что человек, вступающий в команду, имеет опыт в траншеях.
Ответ 6
- Почему типичная программа сокета нуждается в многопоточности
- Как вы общаетесь с множеством разных сетевых подключений одновременно, из одного процесса/потока? Подсказка: асинхронная розетка
- Объясните, как работает Internet datatransfer? или Объясните, как работает веб-сервер? ответьте на него на основе концепций программирования сокетов, Hint TCP Http и т.д.
Ответ 7
Вопросы сокета
- Что такое сокет?
- В чем разница между
accept
и connect
?
- В чем разница между
close
и shutdown
?
- Как вы могли бы
connect
до www.google.com
асинхронно?
Многопоточные вопросы
- Что такое поток и как он отличается от процесса?
- Когда вы можете использовать потоки в одной системе ЦП?
- Как бы вы измеряли накладные расходы коммутатора контекста между потоками?
- Как бы вы сделали таблицу хеш-таблицы с минимальным уровнем безопасности, позволяя максимально concurrency?
Ответ 8
- Назовите некоторые преимущества и недостатки Java-сокетов.
- В чем разница между экземпляром URL и экземпляром URLConnection?
- Как мне установить соединение с URL?
- Что такое сокет в сети Java и RMI?
- Какая информация необходима для создания TCP-сокета?
- Каковы два важных класса Socket Socket?
- Когда вызывается MalformedURLException и UnknownHostException?
- Что означает RMI?
- Что такое RMI?
- В чем разница между классами File и RandomAccessFile?
- Какой интерфейс должен реализовать объект, прежде чем он может быть записан в поток как объект?
- Объясните поиск локальных портов
- Каковы два важных класса Socket Socket?