Как определить фактический уровень развития в магазине, например. С++ против C?

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

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

В вашем опыте эти места обозначают норму или исключение?

Как (или может) вы попытаетесь определить групповой уровень сложности и приверженности С++ в настройке интервью? Например, я пробовал задавать вопросы о том, как компания использует такие вещи, как STL, Boost, сторонние библиотеки и т.д., Но это, похоже, постепенно приближается к реальности ситуации, которую вы найдете однажды в ней. Мысли?

Ответы

Ответ 1

Это действительно все по всем направлениям. На одном конце спектра я работал в одном месте, где код был недавно переписан на C. Недавно был 10 лет назад. Все были очень скептически настроены по поводу этой новой технологии.

Чуть дальше по спектру вы найдете программистов C, у которых есть компиляторы с включенными функциями С++. Они будут метаться по ключевому слову "class". Но кроме этого, они практически пишут на C.

Далее по линии, я думаю, вы найдете тех, кто просто наследовал наследование и полиморфизм. Это те парни и девушки, которые обманывают программу MFC или wxWidgets, думая, что это самый большой.

Вы пойдете немного дальше и найдете людей, которые только что прочитали Мейера. Они все о том, как эффективно использовать STL. У них есть основное понятие шаблонов, которое в основном соответствует тому, как их использует STL.

Затем у вас есть опытные разработчики метапрограммирования Modern С++. Многие из нас в наши дни используют свою работу в форме повышения и всей его доброты. Немногие на самом деле болтаются вокруг с метапрограммированием шаблонов. Это, наверное, хорошая вещь.

Я видел совершенно хороший код, написанный на каждом уровне.

Охлаждающая вещь, которая мне всегда нравилась в С++, заключается в том, что на каждом уровне дополнительной сложности стоимость может быть концептуализирована с точки зрения "как эта новая абстракция может быть реализована на C". Поэтому я могу концептуализировать, что наследование и полиморфизм добавляют стоимость поиска указателя функции. Поскольку я видел это и писал это на C, я знаю, для чего я. У меня также есть ощущение того, как шаблоны работают частично из-за того, как препроцессор работает в C. Это относится ко многим функциям в С++ и C world.

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

Ответ 2

Если вы читаете между строками, вы, вероятно, найдете много информации, похожей на их вопросы, как с точки зрения того, что они хотят, так и с их уровнем сложности.

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

Просто не оторвайтесь, как высокомерный рывок, когда вы это сделаете.; -)

Ответ 3

Места, в которых я работал, не обязательно использовали C soley. Они не проворачивали новые программы один за другим... они обычно строили что-то большое и поддерживали его. По моему опыту становится все труднее продолжать внедрять новые захватывающие функции языка в более старую часть программного обеспечения, которая продолжает расти, и основная задача - поддерживать/обновлять ее.

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

Ответ 4

Я работал в течение длительного периода времени в трех магазинах С++. Во всех случаях они были настоящими магазинами на С++, используя С++, поскольку он предназначался для использования, и оставался достаточно современным, учитывая время, в которое я работал над ними.

Ответ 5

Попросите их предоставить копию своего документа стандартов кодирования С++. Это должно дать вам представление о том уровне, на котором они работают. Если у них их нет, это может быть плохим признаком.

Ответ 6

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


Во-первых, любая среда, которая поощряет "умность", является подозрительной. Если я вижу много Boost, много метапрограммирования шаблонов, и особенно любое использование функциональных функций С++, это большой красный предупреждающий знак. Это означает, что разработчики имеют некоторое представление о том, что такое правильное программирование, но ограничены либо отсутствием воображения, либо политикой для использования дряхлого мусорного языка, такого как С++. C является скучным и утомительным для работы, но "продвинутый" С++ выходит за его пределы, чтобы вмешиваться в разработку.

Во-вторых, проверьте, рассматривается ли конкретная технология или концепция как модное слово. Если потенциальный работодатель использует XML, вы можете легко проверить, используете ли вы реальный синтаксический анализатор/сериализатор (либо SAX, либо DOM в порядке), либо они анализируют его с помощью регулярных выражений и сериализуют его с помощью необработанных потоков символов? Если последнее, это показывает, что они не понимают, почему XML полезен, и они просто используют его, чтобы иметь описание с тремя буквами в описании проекта.

В-третьих, выясните, какой язык разработчики хотят использовать и почему. У каждого хорошего разработчика есть любимый неясный язык - неважно, будут ли они Python, Ruby, Smalltalk, Haskell или Factor - и причина для его предпочтения. Если все довольны работой на С++, это еще один предупреждающий знак, что у них нет большого интереса к программированию в целом.