Стоит ли ожидать, что недавние выпускники будут знакомы с основными концепциями программирования? [закрыто]

9

Кажется, существует ОГРОМНОЕ несоответствие между тем, что я ожидаю от кого-то, кто несколько лет изучал программирование в университете, и тем, что на самом деле знают.

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

  • В чем разница между ссылочным типом и типом значения?

    Если кажется, что интервьюируемый действительно не понимает свой собственный ответ, или если он не знает терминологию, которую я использую, я попадаю в более подробные сведения, прося его объяснить мне, что происходит, когда я пишу int i = 0; в методе, как насчет объекта o = 0, объекта o = new MyClass () и т. д ...

    По сути, я делаю все, что в моих силах, чтобы обмануть собеседника и рассказать мне о стеке вызовов, куче и т. Д., И я стараюсь придерживаться концепций, не зависящих от языка. Если собеседник скажет мне, что он много сделал на C, C ++ или C #, я углублюсь в конкретный язык и, возможно, в детали реализации.

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

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

  • В чем разница между абстрактным классом и интерфейсом. В каких случаях вы должны использовать один над другим?

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

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

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

Что касается юниоров, у меня все хорошо с тем, что я найму кого-то, кто не знает, как хорошо организовать свое время, или кого-то, кто, например, не привык к процессам промышленного строительства, но у меня такое чувство, что если кто-то не слышал этого слова " callstack "после нескольких лет изучения информатики он либо глуп, либо немотивирован, либо выбрал свой университет очень неразумно.

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


Редактировать. Что касается «немедленного типа», то это был просто буквальный перевод с французского на английский, как мы обычно делаем наши интервью на французском языке. Я исправил это в своем вопросе. Но, тем не менее, я думаю, вы все прекрасно понимаете, что я имел в виду, что делает мою точку зрения, не так ли?

Бранн
источник
4
Просто небольшое замечание, но я бы не знал, что вы имеете в виду под непосредственным типом, типом значения с другой стороны, который я мог бы вам объяснить. Однако я чувствую, что каждый, кто получил высшее образование с любой степенью CS, должен иметь возможность ответить на эти два вопроса. Чтобы улучшить свой вопрос, возможно, вы могли бы привести пример того, насколько исчерпывающими должны быть ваши ответы.
sebastiangeiger
Изучение языка в университете более 2 лет, соревнование с другими предметами оставляет студентам только минимальный минимум после окончания тестов. Единственное, в чем вы можете быть уверены, это то, что они могут узнать эту информацию или когда-то знали ее. Только практический опыт может дать им постоянство знаний. Джоэл Спольски приводит отличный пример того, как и почему ученикам не хватает многих способностей, которые мы должны ожидать от программистов, в его статье в блоге здесь - http://www.joelonsoftware.com/items/2009/10/26.html
Джастин Шилд
@sebastiangeiger; ты прав обновлен!
Бранн
2
Он должен знать, что он почти ничего не знает. Это ключевой момент, чтобы стать лучше со временем.
Deadalnix
Бранн, что интересно, все люди, которые ответили на этот вопрос, упоминают «немедленный тип» (ошибка перевода) и говорят, что не знают, что это такое. Ваши интервьюеры говорят: «Я не изучал эти вопросы глубоко?» или они утверждают, что являются экспертами, например, по особенностям времени выполнения и глубокому пониманию компиляторов?
Pindatjuh

Ответы:

15

Терминология является распространенным недостатком в ситуации интервью.

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

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

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

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

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

Не говоря уже о том, что некоторые люди получают полный сбой памяти в интервью. Я в том числе. Я помню, как меня попросили написать программу на C, и я не мог на всю жизнь вспомнить символ, используемый для доступа к члену по указателю (->), и мне пришлось кого-то спрашивать. Это было даже не для моей первой работы. Мальчик этот момент мучил меня последние 15 лет :-)

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

Не сдавайтесь интервьюируемым, потому что они не знают, что такое непосредственный тип. Двигаться дальше.

Роджер Аттрилл
источник
@Brann - немедленный тип -> тип значения. отметил
Роджер Аттрилл
Ну, может быть, это не достаточно ясно из формулировки моего вопроса, но я действительно много делаю, чтобы не было проблем с терминологией. Я спрашиваю собеседника о том, что происходит в конкретных ситуациях на языке по своему выбору, я спрашиваю его, знает ли он, что такое колл-стэк, я спрашиваю его, существуют ли другие «виды» воспоминаний, я спрашиваю его, где передаются аргументы функции хранится на императивном языке по своему выбору. На самом деле, я не чувствую, что это проблема терминологии. Иногда у собеседника просто НЕТ ИДЕИ о том, что происходит за сценой, когда создается экземпляр класса.
Бранн
Что касается "двигаться дальше", это то, что я обычно делаю. Но по моему опыту, когда собеседник не знает, что такое тип значения, он не знает ни о синхронизации потоков, ни о том, для чего используются обобщенные элементы и т. Д. Итак, после нескольких вопросов, когда станет ясно, что кандидат не является не подходя для работы, я обычно даю ему несколько советов о том, как научиться лучше выступать на технических собеседованиях и ... перейти к следующему кандидату :)
Бранн
12

Вы запрашиваете знания по конкретному языку, и используемые вами термины не используются на 100% одинаково на всех языках. Я, например, понятия не имею, что такое «непосредственный тип».

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


источник
Я обновил до «тип значения». Но дело в том, что если собеседник не понимает вопрос, я обычно объясняю его более подробно и стараюсь изо всех сил заставить собеседника рассказать мне о стеке вызовов, куче и т. Д. (Да, я ЗНАЮ это детали реализации, но, тем не менее, это общие концепции, которые на самом деле не зависят от языка (IMO)
Бранн
Я думаю, что концепция "callstack" является одной из тех общих концепций, о которых вы говорите. Даже после переписывания вопроса десятью различными способами, чтобы удостовериться, что собеседник знает, я ожидаю, что он расскажет мне о распределении памяти, стеке вызовов, типах значений и т. Д., Но я все еще, чаще всего, получаю пустые взгляды ...
Бранн
Если я вас правильно понимаю, вы хотите знать, знает ли разработчик указатели и знает, что они делают и как их использовать?
Нет я не Я хочу убедиться, что у разработчика есть хотя бы приблизительное представление о том, что происходит за кулисами, когда он использует функцию x или y своего языка по своему выбору. Спрашивать его об указателях - это просто способ заставить его рассказать о том, что он знает о распределении памяти.
Бранн
3
@Brann, все подробности о стеке вызовов, куче и т. Д., По сути, применяются только указатели .
3

«Я слышу и забываю. Я вижу и помню. Я понимаю и понимаю». (И, по моему мнению, понимание ведет к лучшему удержанию памяти.)

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

Я пошел в колледж, который был разработан специально для оптимизации обучения по выбранной специальности (так, например, у вас не было бы исторической литературы, если бы вы были магистрантом CS; самое близкое, что вы можете получить к исторической литературе - это научная фантастика), и Прямо из колледжа я не смог бы рассказать вам, в чем интерфейс, не говоря уже о его отличии от абстрактного класса, хотя мы и узнали об абстракции (и интерфейсов в .Net, технологии, которую я изучил, предостаточно). Мы могли бы затронуть интерфейсы, но они потерялись во всех других вещах, которые нам нужно было знать, чтобы пройти класс. Лишь после моей первой работы в колледже я узнал об интерфейсах, особенно осмысленным образом.

Вы упомянули о проведении собеседований на французском языке, что свидетельствует о том, что мы находимся в разных странах, поэтому ваш пробег может варьироваться, но здесь, в США, колледжи, как известно, отстают от времени, когда речь заходит о технологиях. Поэтому, если вы не имеете дело со зрелыми языками (C / C ++, COBOL и т. Д.), Вполне вероятно, что то, что вы использовали даже в течение многих лет, может быть недоступно в той версии, на которой изучали студенты. Например, в .Net 3.0 были представлены Entity Framework, WPF, WCF и множество других интересных вещей, но даже моя школа все еще застряла на .Net 1.1 и 2.0 (что означало застрять в ADO.NET и даже не изучать Object -Реляционное картографирование). Школа, использующая PHP, может застрять на (не ООП) PHP 4.

Имейте также в виду, что студент должен взять тонну информации, которая часто используется только в течение короткого периода времени. «Продвинутые» концепции, такие как абстракция, часто преподаются в конце урока, где у ученика может быть только неделя, чтобы поиграть с ним, в то время как он борется с другими уроками, которые он / она должен взять, и, возможно, на верхняя часть работы с частичной или полной занятостью. Объедините все это вместе, и это удивительно, что человек может вспомнить все , а тем более сохранить все это прямо.

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

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

Shauna
источник
Ну, во Франции (и я подозреваю, что в большинстве мест это одно и то же), каждый учебный план CS включает в себя обязательное кодирование на C (или аналогичных языках), когда кто-то узнает о распределении памяти между прочим), и некоторое обязательное кодирование на C ++ / java / .net (где можно узнать об ООП). Кроме того, вы также делаете много вещей, которые могут охватывать множество областей, но если кто-то заканчивает обучение, не зная, что такое виртуальный метод, это означает, что он не относился к своим исследованиям очень серьезно ... Я, конечно, знал, что это было, когда я закончил ... Что бы вы подумали о студенте по математике, который не знает, что такое серия?
Бранн
@ Бранн - Согласно моему (быстрому) исследованию того, что такое информатика (как и мое предыдущее понимание), CS не является специализацией в программировании. Да, в нем есть программирование, но оно не обязательно является основным направлением. В этом отношении «Информатика» настолько обширна и довольно расплывчата, что может варьироваться от школы к школе. Стэнфорд входит в число лучших школ CS в США, и для своих списков выбора курсов на осень и зиму ( www-cs.stanford.edu/courses ) в нем насчитывается менее полудюжины курсов, в которых основное внимание уделяется фактическому программированию (а не только теория программ), из примерно 50 классов.
Шона
Это означает, что студент может использовать любой данный язык в течение одного или двух семестров, а затем не трогать его до конца своей студенческой карьеры. Кроме того, он также изучает робототехнику и генетическое программирование, которые сильно отличаются от стандартных программ для настольных компьютеров / встроенных систем / программно-аппаратных средств.
Шона
Что бы вы подумали о студенте по математике, который не знает, что такое серия?- Это зависит от того, на каком математике специализируется студент и над чем он на самом деле работает. Опять же, вполне возможно, что студент изучил это (и, следовательно, технически знает, что это такое), но просто забыл об этом, потому что он никогда не использует это в своей повседневной работе с криптографией или дискретной математикой. Математика и программирование, как правило, считаются темами «используй или теряй».
Шона
3

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

  • Кажется, существует ОГРОМНОЕ несоответствие между тем, что я ожидаю от кого-то, кто несколько лет изучал программирование в университете, и тем, что на самом деле знают.

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

  • В чем разница между ссылочным типом и типом значения?

    Правило большого пальца: если Лисп может обойтись без различия, это только беспорядок;)

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

    Говоря о понятиях, не зависящих от языка, это хорошая идея. Однако ни куча, ни стек не зависят от языка.

  • Если собеседник скажет мне, что он много сделал на C, C ++ или C #, я углублюсь в конкретный язык и, возможно, в детали реализации.

    Все эти языки имеют спецификации. Реализация не определяется языком. C и C ++ могут быть скомпилированы с использованием LLVM для запуска на Flash Player или любой среде выполнения JavaScript. Это делает ваши предположения о распределении кучи и стека недействительными.
    С C # это почти то же самое. C # JITed перед выполнением с большой оптимизацией, что может быть сделано. Локальные переменные, которые захватываются замыканиями, в конечном итоге оказываются в куче, а не в стеке, тогда как анализ escape позволяет хранить локальные объекты области видимости (которые обычно должны попадать в кучу) для хранения в стеке. Правильное распределение регистров также значительно уменьшит необходимость выделения стеков.

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

    Что бы вы спросили кого-то, кто имеет только большой опыт программирования на Haskell? :П

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

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

    1. те, где его не существует. Я полагаю, что Objective-C является каноническим примером.
    2. те, где это действительно держит
    3. те, где это существует, но не имеет места. Я думаю, что Java - лучший пример (я бы предположил, что это уже исправлено).

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

  • В чем разница между абстрактным классом и интерфейсом. В каких случаях вы должны использовать один над другим?

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

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

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

    Существует ряд объектно-ориентированных языков, которые не используют наследование или классические таблицы.

Мой совет:

  • Будьте очень осторожны, предполагая, что все, что вы знаете о программировании, действительно является базовой концепцией программирования. Можно предположить, что у каждого хорошего программиста есть любопытство узнать ответы на такой вопрос. Однако вы не можете предполагать, что любой, кто их знает, хорош. Я склонен полагать, что те, кто придает слишком большое значение таким деталям, на самом деле, скорее всего, не увидят лес за деревьями.
  • Не беспокойтесь о деталях реализации. Языки программирования предназначены для создания абстракций. Вы должны думать с точки зрения этих абстракций и только с точки зрения их. Хороший код не написан против деталей реализации языка. Он написан для лучшего внедрения семантики вашего решения в языковые функции. Если вам это удастся, ваш код станет не только надежным, но и хорошо читаемым для всех, кто знаком с языком, и его легче будет оптимизировать для компилятора.
  • Знать ответы, которые вы ожидаете, не так важно. Понимание их есть. Если кто-то просто знал их, потому что они читали их в учебнике или его профессор сказал им, то это мало что значит. На самом деле вы можете объяснить все эти вещи за несколько часов.
    Важно то, что вы понимаете, как эти простые и разрозненные факты могут быть применены для разработки гибких и поддерживаемых решений сложных проблем.

Чтобы добраться до реального вопроса:

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

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

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

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

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

back2dos
источник
1

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

Чтобы продолжить аналогию с водительскими правами: некоторым людям все равно, что происходит, когда они вставляют ключ (или нажимают кнопку «Пуск»). Они просто делают это и едут. Это также не означает, что они бесполезны, просто им потребуется время, чтобы достичь славы ;-)

Просто личное замечание по поводу степени / диплома: в настоящее время я работаю с людьми с биохимией и промышленным опытом, которые имеют несколько лет опыта работы в области информационных технологий, а также с некоторыми «опытными» парнями с опытом работы в CS, и думаю, кто из них наиболее осведомлен о том, как работает двигатель автомобиля? Да, это не парни, которые изучали CS! Так что я просто испытываю тот факт, что диплом не всегда имеет значение!

Jalayn
источник
2
Некоторые люди могут так долго возиться со своим транспортным средством, чтобы развить его до максимальной скорости, что медленные закончили еще до того, как начали.
достаточно справедливо :-)
Jalayn
Я полностью согласен с людьми из других областей, кроме CS. но для того, кто на самом деле владеет степенью CS, незнание того, что такое тип значения, кажется немного тревожным, если не сказать больше ...
Бранн
@brann, они могут не знать этот термин , но все же знают, что физическое размещение данных, хранящихся в переменной, размещается в сегменте данных, а не в куче или стеке. Какой язык вы используете, так как это кажется важным?
Я использую c #. И я согласен, что знание такого рода деталей реализации, вероятно, не так важно в этом контексте (хотя в некоторых конкретных ситуациях это может быть). Дело в том, что я не пытаюсь найти эксперта по AC #. Я пытаюсь найти кого-то достаточно умного и мотивированного, чтобы стать действительно хорошим программистом на c #. Если кто-то не хотел узнать / понять, что такое тип значения, я склонен (возможно, ошибочно) думать, что он упускает одно из этих двух качеств, по крайней мере
Бранн
1

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

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

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

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

maple_shaft
источник
1
 or chose his university very unwisely.

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

Даже если на каждом из таких курсов вы увидели огромную неоновую вывеску с надписью «МЫ НЕ ОБУЧАЕМ СТЕКЛА ВЫЗОВА», то чего вы ждете от студентов? Проведите месяцы, исследуя его, чтобы они могли действительно понять, что это значит и сколько им понадобится того, кто научит этому? Для каждого курса с каждой комбинацией знаков?

Люди не могут выбрать свое образование, реально.

DeadMG
источник
0

При опросе новых выпускников я придерживаюсь тем, перечисленных в их резюме. Если они использовали Java, я спрошу их о Java. Если они использовали Blub, то я полчаса читаю о Blub и спрашиваю их об этом. Но я всегда спрашиваю, используя ключевые слова языка. Если это Java, то я буду спрашивать о «расширяет» и «реализует», но не «подкласс» и «наследует». Я ожидаю, что новые выпускники смогут говорить о некотором написанном ими коде, уметь решать простую задачу программирования и понимать основные структуры данных (хеш-таблицы и деревья).

Кевин Клайн
источник
0

Как директор, который разработал процесс собеседования, я могу рассказать вам о том, что наша компания ожидает от новых выпускников: я ожидаю людей, которые могут читать документацию и применять знания. Таким образом, у нас есть несколько очень практических задач, которые мы просим их выполнить. Это простые задачи по написанию кода, не намного сложнее, чем обычные упражнения в колледже (опытные «хорошие» разработчики могут справиться с этим за 15 минут). Кандидату предоставляется рабочая станция с доступом в Интернет, компилятором (в нашем случае Visual Studio) и файлами справки.

Если они не могут написать код в этих условиях, они не получают вознаграждение за наем. Просто как тот. Простое оправдание «ну, я не знаю языка» никогда не шутило со мной, потому что каждый кандидат, который приходит сюда на собеседование, знает, что будет тест, он знает языки и инструменты, которые мы используем заранее. Вы можете скачать Visual Studio Express дома и сделать некоторые основы, прежде чем войти и пройти тест начального уровня, тех, кто не беспокоит ... ну, это то, что я называю красным флагом.

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