LINUX.ORG.RU

Реальные вопросы на собеседовании

 


4

3

Задавайте только реальные вопросы с собеседования. Кто хочет может отвечать на эти вопросы, задавший вопрос должен ответить зачтено или нет и провести разбор ответа, указать на ошибки и недостатки в ответе. Если зачета никто не получил в течении недели, автор вопроса сам дает ответ. Остальные естественно тоже могут участвовать в обсуждениях.


Ответ на: комментарий от Harald

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

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 2)
Ответ на: комментарий от kirk_johnson

то были плохие негодные эмбедщики, ненастоящие

Harald ★★★★★
()
Ответ на: комментарий от Harald

Да, но гадать по IP’у без контекста, трейса и данных на стеке это дикая трата времени.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

ну а вообще, если тот эмбед на голом железе, то никаких сегфолтов не будет, нет ОСи - нет сегфолта :) Девайс просто не работает

Harald ★★★★★
()
Ответ на: комментарий от kirk_johnson

Высоко планку задираешь. Я видел, как люди с десятилетним опытом не знали, что строка в С терминируется нулевым символом, а один чувак не знал даже, что поле структуры разыменовывается через «->». С его точки зрения это были плюсы и проделки Сатаны, а православно нужно через «(*p).».

anonymous
()
Ответ на: комментарий от kirk_johnson

Самое веселье, это когда glibc стрипнут. Это в генте по умолчанию и включается оно ни разу не тривиально.

И тут выяснилось много любопытных вещей

Из последнего, я всё никак не могу поверить какое количество людей не знает про отладочную сборку. Я понимаю, что в скриптоте её нет, но всё же.

RazrFalcon ★★★★★
()
Ответ на: комментарий от kirk_johnson

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

WitcherGeralt ★★
()
Ответ на: комментарий от anonymous

люди с десятилетним опытом не знали, что строка в С терминируется нулевым символом

А как они вообще умудрялись что-то писать?

WitcherGeralt ★★
()
Ответ на: комментарий от RazrFalcon

Я, например, знаю. Некогда приходилось пердолился с gdb. Но с тех пор как мне попал в руки valgrind, я не понимаю нафиг оно нужно.

Разве что-то изчезающе-неочевидное искать в какой-нибудь сервисе. Но мне не приходилось.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Я не спрашивал, боялся услышать ответ, но работали они все в компаниях, так или иначе связанных с государственным сектором - всякие ооошки-подрядчики. Теперь это для меня триггер.

anonymous
()
Ответ на: комментарий от RazrFalcon

Я понимаю, что в скриптоте её нет, но всё же.

Зависит от скриптоты. Потому что зачастую она есть, просто многие привыкли дебажить принтами.

hateyoufeel ★★★★★
()
Ответ на: комментарий от kirk_johnson

Нет, это очень простой вопрос. Если у тебя многопоточное чтение динамически аллоцируемых объектов, то быстрее RCU.

уважаемый сеньор знает, как устроен хипменеджер и что внутре его ради тредсейфа должен быть мьютекс? каким образом он желает избавиться от мьютексов методом rcu, если его райтеры будут яростно конкурировать на мьютексе хипменеджера, пытаясь получить блок памяти под копию? или вопрос с rcu хипменеджером уже решен, и там нет блокировок?

alysnix ★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Ибо у тебя два шара, разбил оба и кидать будет просто нечего

Прыгаешь сам. Все равно жызнь математика после такого уже не имеет смысла.

Nervous ★★★★★
()
Ответ на: комментарий от Warez

На сколько рациональных чисел больше натуральных?

Любое неотрицательное рациональное число может быть представлено в виде отношения двух натуральных, то есть их как минимум количество сочетаний натуральных чисел по 2. Точную формулу забыл.

P. S. Когда уже LaTeX в постах?

Nervous ★★★★★
()

Вы что, серьезно тут этим занимаетесь? Любой мало-мальски прошаренный чел может задать вопрос, на который кроме него самого ответить никто не сможет. А нуба тягать по углубленным знаниям тоже смысла нету. Максимум, что нужно спрашивать у прогеров — это «как выглядит монитор» и «как называется этот прибор с большим числом кнопок». Всё, дальше смотреть нужно только на способность писать непосредственный код, в самом крайнем случае можно попросить объяснить, что и почему он написал, если уж вы сами не можете прочитать и понять программу.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Вы что, серьезно тут этим занимаетесь?

Для развлечения же, ну. Угрюмые нерды тоже хотят развлекаться.

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Не‐а.

количество сочетаний натуральных чисел по 2

Количество сочетаний бесконечности по два? Но факториал от бесконечности не считается.

Warez
()
Ответ на: комментарий от kirk_johnson

Ага. Про то, что нужно предварительно иметь не стрипнутый бинарник (ну чтобы стектрейс хотя бы прочитать, не говоря уже про данные на стеке в читаемом виде) знала где-то четверть. Чем стрипнутый отличается от не стрипнутого примерно человек пять. Они же знали про возможность иметь стрипнутые символы отдельно

Но ты сам не сможешь назвать что нужно иметь, чтобы отладить многопоточное приложение на Си. Это довольно специфичные знания, который разнятся от одной сферы к другой. Например, в MSVC, ICC, или в clang на маке проблема отладочных файлов намного менее актуальна, поскольку они сразу генерируют отдельный бинарник и отладочную инфу.

И, в то же время, навык организации кода, расстановки акцентов, особых извращений для поиска неуловимых ошибок, которые необходимы для написания любого крупного проекта на Си, приобретаются большим трудом годами и является намного более важным показателем, чем вопрос про генерацию отдельных отладочных файлов, ответ на который гуглится за минуту: https://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-o...

Ну, то есть, ответ говорит, что человек когда-то работал с GCC и знает его заморочки — очень хорошо, теперь кадровик может передать собеседуемого квалифицированному программисту, чтобы последний уже смог углублено провести оценку претендента на раб место.

byko3y ★★★★
()
Ответ на: комментарий от WitcherGeralt

Я, например, знаю. Некогда приходилось пердолился с gdb. Но с тех пор как мне попал в руки valgrind, я не понимаю нафиг оно нужно.
Разве что-то изчезающе-неочевидное искать в какой-нибудь сервисе. Но мне не приходилось
Стектрейс — всё, что мне нужно. Дебаггер — нафиг

Сразу видно человека, который не работал с крупными проектами на Си. В свое время я дошел до финала GSoC, хотя за половину лета толком не написал никаких фич — именно потому, что я научился по максимум применять инструменты отладки и не применять их там, где они не эффективны. Меня даже сам ananas потом похвалил.

Конкретно в Си очень часто происходит ситуация, когда стэктрейс не дает ничего. Совсем ничего.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Ну мы искали чувака под определенную сферу деятельности, с определенными скиллами и определенным бэком. О чем честно и подробно писали в вакансии.

И я бы понял, если бы кандидаты говорили «да, вот этого не знаем, но быстро научимся, зато вот фундаментальные знания огого, а еще вот такие штуки делали, прикинь как это сложно?». Но чуваки говорили «да-да офигенно шарим в сях и линупсах, прям огого скока опыта в той сфере что вы описали», а на деле про отладку без принтов ребята не слышали, разницу между упаковкой данных в префиксное дерево и хештаблицу назвать не могут, про lockless вообще можно было не спрашивать.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

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

Вы хорошо описали признаки «дурака».
Дурак - знает мало, но думает, что знает больше всех.

Владимир

anonymous
()
Ответ на: комментарий от targitaj

Да, особенно если нужен учитель по русскому языку, а не программист.

rumgot ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Можно его просто раздробить. Либо ещё раз взяв хеш, либо по какому-то дополнительному признаку с более сложной логикой. И ставить локи уже не на весь кеш глобально, а на одну область.
Ну, это топорно, зато легко реализовать на коленке, для собеседования ок

Для собеседования у тебя — ок. Я бы сразу поднял вопрос «чо делать с зависаниями от лютейших кэш мисов при изменении размера хэш-таблицы?». Ответ «ну у нас же массивы стали меньше» не прокатывает, потому что в наивной реализации хэш-таблицы объем перемещаемой памяти может оказаться даже больше у мелких массивов, чем у крупного — это вызвано особенностями реализации современных менеджеров памяти, которые гарантировано перемещают мелкие блоки при изменении их размера буквально в полтора-два раза.

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

byko3y ★★★★
()
Ответ на: комментарий от targitaj

Надо на собесах диктанты заставлять писать. И за «ться», «одевать» и прочее тупое дермо гнать в шею сразу.

У «кандидатов» обычно все заканчивается на «ться»: трепаться, одеваться, матюкаться, выпендриваться, …

Владимир

anonymous
()
Ответ на: комментарий от anonymous

бросить с десятого, потом с двадцатого, тридцатого и т.д. Если на k*10 разобеться, то сбрасывать второй с (k-1)*10+i. i=1..9. Максимальное число попыток будет 19

Это почти правильный ответ, только попыток будет 20. По крайней мере, я не нахожу ничего быстрее. Через десять этажей — потому что квадратный корень из ста. Задача по сути состоит в том, чтобы двумя числами с наименьшим диапазоном описать 100 возможных состояний. Если брать 20 и 5, то получится 25 попыток.

byko3y ★★★★
()
Ответ на: комментарий от kirk_johnson

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

О - оверинжинирнг

Здесь проблема не в оверинжиниринге, а в том, что он не продумал сценарий добавления элемента/изменения размера массива, на который придется-таки вешать один глобальный лок.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

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

kirk_johnson ★☆
()

Задавайте только реальные вопросы с собеседования.

Лет пятнадцать назад был такой казус.
О том, что C++, Perl, PHP, JavaScript, … для меня не пустой звук даже «не заикался» /сразу бы скорую вызвали из психбольницы/.
Сказал, что знаю 1С.
Так как 1С 7.7 была слабенькой, то использовал Formex, 1cpp, …
Но меня «завалили», начали задавать вопросы типа - «Выберите пиктограмму, которая используется для добавления там чегой-то в что-то».
Вообщем вопросы были - «лютейшая чушь».

Завалили.

Владимир

anonymous
()
Ответ на: комментарий от kirk_johnson

Там чуть выше по треду через прогрессию 14 сделали

Да, действительно. Только не 14, а 15.

byko3y ★★★★
()
Ответ на: комментарий от kirk_johnson

Это, кстати, не значит, что ребята из эмбеддеда нифига не знают, просто там предметная область другая.

anonymous
()

Lzzz
Ну, неплохо получилось. Тебе серьёзно нужны плюсы на собеседование? Иди на пхп/js разраба.

crutch_master ★★★★★
()
Ответ на: комментарий от kirk_johnson

Может проще заблокировать тред, поменять данные, и разблокировать, чем делать копию. это вопрос сложный.

Нет, это очень простой вопрос. Если у тебя многопоточное чтение динамически аллоцируемых объектов, то быстрее RCU. Если у тебя многопоточное чтение чего-то, что влезает в машинное слово, то тебе достаточно аналогов READ_ONCE()/WRITE_ONCE(). spinlock при многопоточном чтении будет хуже в любом случае

Я читаю какие-то разговоры про оазис за горизонтом. Спинлоки бывают разные, спинлоки можно ставить на разные типы операций. RCU, внезапно, тоже использует спинлок. Используя спинлок только на запись и производя проверку уникальности через цикл без блокировки (как это делает постгрес, к слову) можно вполне добиться хорошей производительности даже с самым простым спинлоком, не говоря уже про экспоненциальную выдержку, не требующую никакой дополнительной памяти.

byko3y ★★★★
()
Ответ на: комментарий от anonymous

Вообщем вопросы были - «лютейшая чушь».

Ни когда не буду ни работать ни сотрудничать с софтверными компаниями.
Работа с психами - не мой профиль.

Владимир

anonymous
()
Ответ на: комментарий от peregrine

Ну нет. Если серьёзно 3 причины есть. Из-за двух из них альтернатива, которую позволяет первая не прижилась

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

byko3y ★★★★
()
Ответ на: комментарий от byko3y

RCU использует лок только на запись, критическая секция чтения не блокирует апдейты и наоборот. В этом тащемто причина, почему после успешного апдейта два ридера могут видеть разные данные.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от Nervous

Ну я же сказал, что от бесконечности не считается число сочетаний.

Или ты поделить хотел это число сочетаний на число натуральных чисел? Ну на бесконечность тоже не разделишь, противоречия полезут.

Warez
()
Ответ на: комментарий от kirk_johnson

разницу между упаковкой данных в префиксное дерево и хештаблицу назвать не могут

Я тебя искал всю свою жизнь. Поясни мне, кому вообще может понадобиться префиксное дерево? Обработка запроса сервером? Это на статичных switch-ах делается (по сути префиксное дерево на голых машинных кода, без каких-либо данных). Парсить конфиг/код? Обычно для этого читается полностью лексема и потом делается запрос по хэшу в случае добавления новых лексем по ходу парса, поскольку грамотное выстраивание префиксного дерева получается достаточно тяжелое, а при отсутствии добавления новых лексем можно использовать упомянутые switch-и. Я не встречал ни в одной софтине префиксных деревьев, куда их применяют, кроме собеседований?

byko3y ★★★★
()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от Nervous

Если бы я был математиком, то да. Но у меня перед глазами таблица умножения висит, ну ты понял мой уберскил, хотя я тут про арифметику, но шо то шо то для меня эскобар :D

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от WitcherGeralt

И какой бы ты ответ ожидал?

Опять абстрактные оценки. Если бы я брал себя на работу, то ответ мог быть любым, демонстрирующим какое-то понимание вопроса, независимо от того, насколько плохим на самом деле было бы на практике решение. Я сразу ответил, что я бы задавал дополнительные вопросы, а если бы нужно было бы решать конкретную задачу — то это был бы вообще космос. Более того, я предпочел бы оценивать не в формате «вопрос-ответ», а в формате «напиши/перепиши мне программу».

byko3y ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.