LINUX.ORG.RU

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

 


4

3

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


Как понять что случилось, если бинарник на C свалился? Что потребуется для post-mortem?

На этот вопрос (на Сшную должность) отвечала примерно половина -_-

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

Посмотреть в логах адрес инструкции, на которой он упал, затем сделать objdump бинарника и найти ее. Если логов нет, а бинарник стрипнули, то плакать.

Ваша компания готова предложить мне оффер?

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

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

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

Ага, сейчас systemd умеет с кордампами работать. Ну, собственно, нужно, чтобы они куда-то вываливались.

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

Ну, а ты знаешь чего с ним делать?

В общих чертах. Будет нужно — узнаю в подробностях, но пока не требовалось.

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

В том и прикол, на собеседовании ты не можешь сказать: «пацаны, минутку, щас погуглю».

Так и быть, перед собеседованием на сишника погуглю заранее %)

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

Чем стрипнутый отличается от не стрипнутого примерно человек пять.

Вы там с 5-го Б набираете? Вопросы уровня «в чем разница между отладочной и релизной сборкой».

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

Вы там с 5-го Б набираете? Вопросы уровня «в чем разница между отладочной и релизной сборкой».

Я нашел некую корреляцию между уровнем знаний, и являлся ли человек embeddщиком.

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

Разве core dump генерируется всегда? На маке да, но на винде и лине вроде только по предварительному запросу.

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

Разве core dump генерируется всегда? На маке да, но на винде и лине вроде только по предварительному запросу.

Это настраивается.

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

Я надеюсь с Эдиком она не совпадает?

В обратную сторону. В смысле, если чувак занимался embedded, то чувак нихрена не знает.

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

Да, я про это же. Болезнь «я пишу на С - значит я царь и бог программирования» очень распространена.

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

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

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

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

Harald ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от anonymous

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

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

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

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

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

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

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

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

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

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

hateyoufeel ★★★★★
()
Ответ на: комментарий от 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
()
Ответ на: комментарий от kirk_johnson

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

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

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

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

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

В C/C++ он «слабенький» и «глупенький».

Как минимум GCC и Clang генерируют таблицу переходов с бинарным поиском.

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

Как минимум GCC и Clang генерируют таблицу переходов с бинарным поиском.

Не об этом речь.
Функциональность switch «не ахти».

Владимир

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

Роутинг, BGP, page cache, текстовые редакторы, даже PCI IDs в udev в нем хранятся. Я с трудом могу придумать, где trie НЕ используется.

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

Ты сейчас серьезно спрашиваешь, где конкретно используется radix tree? Вот реально на полном серьезе?

Да, на полном серьезе. Ты сейчас ответишь, что в IP-маршрутизации и лингвистической обработке (родился, родились, родятся) — это супер специфичные области, настолько специфичные, что можно так и говорить «дерево IP-маршрутизации». Но я бы хотел напомнить, что сами байты IP адресов настолько маленькие, что по функции приближаются к хэшу, если на секунду забыть про коллизии. То есть, это очень, очень специфичное применение, которое отличается от оригинального префиксного дерева, которое применялось именно для частей слов, обычно не умещающихся в машинное слово.

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

Ты так говоришь, как будто даже бабки во дворе успели написать свою реализацию.

«Бабки во дворе» обычно занимаются вопросами «репутации», а деды «большой политики».

Владимир

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

Роутинг, BGP, page cache, текстовые редакторы, даже PCI IDs в udev в нем хранятся. Я с трудом могу придумать, где trie НЕ используется

Ну первые два — роутинг. Page Cache — да, с хэшей перехали на префиксное дерево. Текстовые редакторы — нет, только с продвинутой лингвистикой. PCI ID — да, стопудов слизали с роутинга.

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

Ой, внезапно «я не встречал ни в одной софтине префиксных деревьев» превратилось в пердеж

Что не так? Роутинг — довольно специфичная хрень. Да, я слышал про деревья маршрутизации, но мне почему-то не приходило в голову, что это префиксные деревья. Я работал с УСБ — там никаких деревьев не было. Я сейчас поискал в сорцах линя — кроме роутинга и кэша оно применяется разве что в очень-очень специфичных драйверах и нормализации utf8. Работа с лингвистикой — это тоже весьма специфичная область, с которой не столкнется подавляющее большинство кодеров. Зачем их тогда постоянно спрашивают по этим деревьям?

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

Безусловно. Просто чувак так про свои деревья рассказывает, как будто это «отче наш».

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

Зачем их тогда постоянно спрашивают по этим деревьям?

Потому что специфика работы была с этим связана.

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

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

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

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

У тех, кто не способен без дебаггера и двух строчек написать, всегда горит от этого утверждения.

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

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

Да нет, нам обычно в фидбеке писали, что собес людям понравился.

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

Поясни мне, кому вообще может понадобиться префиксное дерево?

автокомплит и проверка орфографии.

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

У тех, кто не способен без дебаггера и двух строчек написать, всегда горит от этого утверждения. Уууу да ты, оказывается, совсем путой болтун. Какие-то мифические люди, которые пишут какие-то непонятные две строчки, и «не могут» при этом без отладчика. Объект обсуждения отсутствует, не было ни этих людей, ни двух строчек ни «не могут». Этот старый, кочующий из уст в уста высер уже порядком поднадоел. Ты говоришь чужими выдумками, повторяешь как попугай чей-то чужой бред.

Вообще говоря, многие вещи даже типа «на две строчки» кода писать и отлаживать наоборот нужно с отладчиком, без отладчика это либо просто существенно сложнее, либо совсем затруднительно и вообще неразумно.

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

Что еще раз подтверждает, что никаких программ ты вообще никогда не писал. Даже на две строчки.

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

У тех, кто не способен без дебаггера и двух строчек написать, всегда горит от этого утверждения.

Уууу да ты, оказывается, совсем путой болтун. Какие-то мифические люди, которые пишут какие-то непонятные две строчки, и «не могут» при этом без отладчика. Объект обсуждения отсутствует, не было ни этих людей, ни двух строчек ни «не могут». Этот старый, кочующий из уст в уста высер уже порядком поднадоел. Ты говоришь чужими выдумками, повторяешь как попугай чей-то чужой бред.

Вообще говоря, многие вещи даже типа «на две строчки» кода писать и отлаживать наоборот нужно с отладчиком, без отладчика это либо просто существенно сложнее, либо совсем затруднительно и вообще неразумно.

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

Что еще раз подтверждает, что никаких программ ты вообще никогда не писал. Даже на две строчки.

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

Ну видимо тебе нечем ни подтвердить ни развернуть свой довод о том, что отладчик не нужен, потому что отладчиком пользуются только какие-то там былинные совсем идиоты, которые якобы «не способны без отладчика написать даже две строчки кокококок». Поэтому ты докопался до разметки. Ну ты себя сам унизил только что.

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

Да, да.

довод о том, что отладчик

Какой же бестолковый анонимус пошел. Я сказал, что отладчик не нужен мне. Что здесь разворачивать?

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

У тех, кто не способен без дебаггера и двух строчек написать, всегда горит от этого утверждения.
Что здесь разворачивать?

Вот это и разворачивай давай.

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

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

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

У тех, кто не способен без дебаггера и двух строчек написать, всегда горит от этого утверждения.

Когда поймёшь почему у тебя горит, поймёшь и суть утверждения.

Да у нас тут великий гура, владеющий непостижимой и необъяснимой программистской мудростью, но, правда, никогда не программировавший ничего.

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

Да у нас тут великий гура, владеющий непостижимой и необъяснимой программистской мудростью, но, правда, никогда не программировавший ничего.

Описал Царя.

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

Что поделать, такова жизнь. Смотри, восхищайся, надейся стать таким же, когда вырастешь.

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

сеньора

опыт работы там был 5

что искали, то и получали

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