Re[24]: О собеседованиях программистов
От: blackhearted Украина  
Дата: 24.02.11 15:25
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Здравствуйте, Arsen.Shnurkov, Вы писали:


B>>>расскажите, просветите .


AS>>пожалуйста:

AS>>http://www.linux.org.ru/forum/talks/5576613

AG>Линух тут не при чем. Поиск по монстру и сику вакансий на C++ выдаст 90% Unix- это все инвест-банки и встраиваемые системы.


открою тайну, в инвестбанках пишут и под винды. И даже больше чем под линух, особенно внутренние системы.
Re[2]: О собеседованиях программистов
От: Donz Россия http://donz-ru.livejournal.com
Дата: 25.02.11 07:33
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>New Interview Questions for Senior Software Engineers


Боюсь, с таким списком вопросов набор программистов может встать намертво.
Re[3]: О собеседованиях программистов
От: Lloyd Россия  
Дата: 25.02.11 07:35
Оценка: +1
Здравствуйте, Donz, Вы писали:

L>>New Interview Questions for Senior Software Engineers


D>Боюсь, с таким списком вопросов набор программистов может встать намертво.


Да нормальный список. Просто у нас кого-нипопадя называют сеньерами.
Re[2]: О собеседованиях программистов
От: Donz Россия http://donz-ru.livejournal.com
Дата: 25.02.11 07:58
Оценка:
Здравствуйте, DorfDepp, Вы писали:

DD>Короткое "здрасьте", и сразу, без предварительного разговора, сыпались все те же мелкие вопросы:

DD>- Чем отличается класс от интерфейса
DD>- Чем отличается overloading от overriding
DD>- Какие методы библиотек используются в каких-то там случаях

Последнее дурость, согласен. Первый вопрос совсем для начинающих, тоже не стал бы его задавать. А вот второй вполне себе. Полиморфизм и наследование — это базовые составляющие ООП языка. Если человек, идя на позицию разработчика на конкретной платформе, не может на него ответить, о чем дальше говорить? Как он будет проектировать по SOLID'у и разбивать разработку на изолированные максимально независимые подзадачи, не имея понятия об элементарных вещах?

DD>Я, к счастью, этого избежал. Как со студенческих времен повелось у меня читать англоязычные документы и искать помощи на англоязычных форумах, так я и вырос с их мировоззрением. А русских сообществ я избежал полностью. Сейчас думаю, что мне просто замечательно с этим повезло.


Да, да. Мы уже поняли, какой вы замечательный и как вам повезло

DD>Мне все больше кажется, что к русским людям применимы слова "кодировщик", "программист", к западным людям подходят больше роли более высокого уровня, такие как "разработчик", консультант, контрактор.


Не задумывались, почему Brainbench, MSC и прочие сертификационные программы, где необходимо знание совсем оторванных от жизни вещей, в том числе и набор методов в том или ином классе, создавались и создаются не в России? Видимо, на Западе русские программисты эту затею пролоббировали. Или же внедрились большими начальниками в микрософты, саны и циски для угнетения творческих западных людей своими мелкими тестиками
Re[3]: О собеседованиях программистов
От: Vzhyk  
Дата: 25.02.11 09:50
Оценка:
25.02.2011 9:58, Donz пишет:

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

> понятия об элементарных вещах?
Тонко троллишь, молодец.
Posted via RSDN NNTP Server 2.1 beta
Re[11]: О собеседованиях программистов
От: michael_isu Беларусь  
Дата: 25.02.11 12:43
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>Здравствуйте, michael_isu, Вы писали:


_> Рад, что прошел Ваш тест на адекватность. Но Ваше интервью я бы гарантированно не прошел.

_>Сейчас, сидя в кресле с чаем и имея под рукой MSDN, я в состоянии аргументированно доказать некорректность вопроса. А сделать то же самое за 4 минуты на собеседовании... Да я бы даже не факт, что догадался бы, что речь идет об IEnumerable.

Не факт, что не прошли бы Черт с ним с этим IEnumerable, я сам много чего не знаю, не в знаниях дело, их можно добыть в MSDN.
Re: О собеседованиях программистов
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 25.02.11 14:01
Оценка:
Здравствуйте, Wissenschaftler, Вы писали:

W>но никто, никто, чёрт возьми, не задает такие вопросы, как:

W>Как бы Вы разбили эту задачу на адекватные подзадачи, чтобы минимизировать риски
W>Как бы организовали систему тестов, если бы пришлось разрабатывать такую-то систему
W>Как бы пошагово локализовывали такой-то баг в некоторой системе

Почему же никто ? Я вот задаю. Не такие конечно. Попроще.
Re[3]: О собеседованиях программистов
От: elmal  
Дата: 26.02.11 06:24
Оценка:
Здравствуйте, Donz, Вы писали:

D>Боюсь, с таким списком вопросов набор программистов может встать намертво.

А вот именно этот список вопросов лично мне понравился. Относительно встанет — вряд ли. Те, кто проваливают текущие собеседования, вполне вероятно осилят этот список, так как он более практичен. Не 100% вопросов конечно осилят, но тем не менее. А далее и остальные подтянутся, так как будут готовиться именно вот к таким вопросам, заодно и польза будет, хотя б в теории будут знать то, что требуется реально на практике.
Re[2]: О собеседованиях программистов
От: SE Украина  
Дата: 05.03.11 21:17
Оценка:
Здравствуйте, De-Bill, Вы писали:


W>>Как бы Вы разбили эту задачу на адекватные подзадачи, чтобы минимизировать риски


DB>90% программистов не умеет толком оценить сроки, а ты про риски. Тем более, что риски — это уровень ответственности лида и менеджера, а не программиста.


Может, потому и сроки не могут оценить, что о рисках не задумываются? Это же "уровень ответственности лида и менеджера, а не программиста".
Re[16]: О собеседованиях программистов
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.03.11 20:12
Оценка:
Здравствуйте, samius, Вы писали:

S>Только линком называется не библиотека, а комплекс средств, большая часть из которых — языковые расширения. Некоторые из них не доступны в C++/CLI — анонимные типы, екстеншн методы, Query expression. теряюсь даже как там с лямбдами и замыканиями для CLI.


Кстати, есть такой язык — F#. В нем нет анонимных типов и методов-расширений, но тем не менее LINQ поддерживается. Даже свой синтаксис имеется.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: О собеседованиях программистов
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.03.11 20:34
Оценка:
Здравствуйте, samius, Вы писали:

S>Для меня все довольно однозначно. Линк без поддержки фреймворка имеет смысл, Линк без поддержки языка — нет. Потому я против того что бы рассматривать Линк отдельно от языка.


Линк без поддержки языка (в смысле синтаксических расширений) вполне себе имеет право на жизнь. То что линк включает в себя очень хорошо продуманную библиотеку обработки последовательностей и АСТ выражений и средства его компиляции уже не мало. А вот как раз без синтаксиса можно спокойно обойтись. Реальная польза от синтаксиса появляется только при использовании джоинов и других сложных конструкций.

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

ВВ>>А "со стороны фреймворка" Линк — это далеко не только библиотека с ФВП, это и абстрактное АСТ, и отдельный компилятор для выражений.

S>Только по той милости что компиляторы в самом фреймворке. Еще раз, линк без поддержки фреймворка возможен.

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

S>>>ну и как, сильно похоже на LINQ:

S>>>Enumerable::Select(Enumerable::Where(Enumerable::Join(source, ...
S>>>?

ВВ>>Смысл вопроса мне неясен.

S>Я просто считаю что то что вызываются методы из неймспейса System::Linq, говорит только о том, что вызываются методы из этого неймспейса.
ВВ>>А seq.Select(...).Where(...) сильно похоже на Линк?
S>Довольно похоже, но на самом деле это может быть банальным fluent интерфейсом

ВВ>>Или Select(_,...) |> Where (_,...)?

S>совсем не похоже

А меж тем это он. И в итоге в сборке будет код такой же как если бы ты использовал методы расширения или синтаксис. Только местами нужно все переставить. Вот тебе реальный пример который можно скомпилирвоать и запустить:
using Nemerle.Linq;
using System.Console;
using System.Linq;
using System.Linq.Enumerable;

module Program
{
  Main() : void
  {
    def data = $[1..10];
    
    def result1 = data.Where(x => x % 2 == 0).Select(x => x * x);
    WriteLine($"result1=..$result1");

    def result2 = data |> Where(_, x => x % 2 == 0) |> Select(_, x => x * x);
    WriteLine($"result2=..$result2");

    def result3 = linq <# from x in data where x % 2 == 0 select x * x #>;
    WriteLine($"result3=..$result3");
  }
}

На консоль будет выведено:
result1=4, 16, 36, 64, 100
result2=4, 16, 36, 64, 100
result3=4, 16, 36, 64, 100
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: О собеседованиях программистов
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.03.11 20:45
Оценка:
Здравствуйте, samius, Вы писали:

ВВ>>Линк без поддержки фреймворка это просто синтаксис. Какой еще он может иметь смысл? По-моему в этом синтаксисе вообще смысла довольно мало.

S>var, анонимные типы — это не синтаксис.

А они вообще мало к линку относятся. В немерле никаких анонимных типов и var нет (есть кортежи, макросы и def), но линк использовать можно.

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

S>Не сильно спокойно.

Я даже предпочитаю использовать ее без синтаксиса. В простых случаях (коих большинство в моем коде) синтаксис только все усложняет. Более того некоторые вещи вообще нельзя через синтаксис выразить. Например, есть перегрузки методов Where и Select принимающие индекс. Их можно использовать только без синтаксиса.

ВВ>>У Линка свой компилятор выражений, если что.

S>В FW 2 его нет, если что.

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

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

S>>>Еще раз, линк без поддержки фреймворка возможен.


ВВ>>Возможен синтаксис. Но 1) линк это не только синтаксис и 2) линк возможен и без синтаксиса.

S>LINQ без интеграции с языком? Интригует

Рядом я привел пример. Может грязи чуть больше, но оно работает и выглядит вполне прилично. В F# только через конвеерный оператор |> линк и можно использовать. Причем даже с деревьями выражений можно работать.

ВВ>>В сухом остатке для удобного использования все инфраструктуры Линка достаточно лишь синтаксиса, позволяющего "по месту" объявлять делегаты. Все. Можно использовать Линк, а возможности C# — только в рамках 2.0.

S>Это только возможность вызова методов, не более. Интеграции в язык нет.

Ага. Интеграции нет, а использовать можно. И если язык хороший, то и проблем особых не возникает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: О собеседованиях программистов
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.03.11 20:49
Оценка:
Здравствуйте, samius, Вы писали:

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

S>Стандартные query операторы, правила трансляции выражений тоже являются частью интеграции. Если язык их не поддерживает, то об поддержке линка для этого языка нет речи.

Ну, вот немерл сам ничего этого не поддерживает. А линк поддерживает. Потому как в нем ФП на хорошем уровне с самого начала был, и потому как в нем макросы есть.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: О собеседованиях программистов
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.03.11 21:03
Оценка:
Здравствуйте, samius, Вы писали:

S>>>То что в FW2 линк применим, но нет библиотек из коробки.

ВВ>>И в твоей ссылке описывается, как эти библиотеки "в коробку" добавить. К чему был пример, повторюсь?
S>К тому что в FW2 линк можно использовать. И без библиотек тоже. Достаточно лишь C# 3.

Странный ты товарищ. Тебе говорят, что аббревиатура LINQ сильно перегружена. Что под ней понимается много чего. А ты все талдычишь, что "Достаточно лишь C# 3". Да можно и так интерпретировать. Но достаточно и просто FW 3.5 без C# 3. Тоже будет работать.

В общем, в понятие входит и языковые расширения, и библиотеки, и идеология трансформации кода в АСТ. И что характерно некоторые аспкты линка нельзя использовать имея только C# 3, а вот имея только FW 3.5 и скажем Nemerle или на худой конец F# линк как не странно использовать вполне можно. И это все равно будут называть линком.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: О собеседованиях программистов
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.03.11 21:11
Оценка:
Здравствуйте, Lloyd, Вы писали:

_>>вопрос был такой — какого типа может быть переменная list:


_>>var e = list.GetEnumerator();


L>IEnumerator? Мне кажется или вы сами на свой вопрос не смогли оветить?


Кстати, садись — дав! Вопрос то был про переменную list. А она уж точно не должна быть IEnumerator, так как должна быть реализовывать паттерн перечислителя.

Но вопрос и правда можно интерпретирвоать по разному. Скажем типом list может быть System.Collections.Generic.List<T>. И что характерно тогда типом e будет System.Collections.Generic.List<T>.Enumerator<T>, а никак не System.Collections.Generic.IEnumerator<T>.

В прочем, System.Collections.Generic.IEnumerator<T> является супертипом для System.Collections.Generic.List<T>.Enumerator<T>, так что в принципе ответ System.Collections.Generic.IEnumerator<T> скорее всего удовлетворил бы. А может и не удовлетворил бы. Тут ведь интерпретировать можно очень по разному.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: О собеседованиях программистов
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.03.11 21:19
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>>var e = list.GetEnumerator();


_>Согласно MSDN, метод GetEnumerator() есть у огромного множества классов, т.к. огромное множество классов поддерживает интерфейс IEnumerable. Соответственно, переменная list может быть какого угодно типа.


Самое забавное в этом вопрос то, что GetEnumerator() не обязан быть методом интерфейса. Скажем оператор foreach C# и Nemerle (за VB не ручаюсь) увидев у типа метод GetEnumerator() использует его без оглядки на интерфейс. Требуется только чтобы у объекта (а это может быть и структура) возвращаемого GetEnumerator() были метод MoveNext и свойство Current. Так что это может быть любой тип без каких бы то ни было оговорок.

Проблема в том, что это знания которые реально нужны только, пожалуй, писателям компиляторов. Если интересны детали читайте раздел 8.8.4 The foreach statement спецификации шарпа.

Спрашивать же такое на собеседованиях по-моему не разумно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: О собеседованиях программистов
От: Lloyd Россия  
Дата: 13.03.11 05:23
Оценка:
Здравствуйте, VladD2, Вы писали:

_>>>var e = list.GetEnumerator();


L>>IEnumerator? Мне кажется или вы сами на свой вопрос не смогли оветить?


VD>Кстати, садись — дав! Вопрос то был про переменную list. А она уж точно не должна быть IEnumerator, так как должна быть реализовывать паттерн перечислителя.


VD>Но вопрос и правда можно интерпретирвоать по разному. Скажем типом list может быть System.Collections.Generic.List<T>. И что характерно тогда типом e будет System.Collections.Generic.List<T>.Enumerator<T>, а никак не System.Collections.Generic.IEnumerator<T>.


VD>В прочем, System.Collections.Generic.IEnumerator<T> является супертипом для System.Collections.Generic.List<T>.Enumerator<T>, так что в принципе ответ System.Collections.Generic.IEnumerator<T> скорее всего удовлетворил бы. А может и не удовлетворил бы. Тут ведь интерпретировать можно очень по разному.


Ну в таком случае и ты садись с двойкой. За что — догадаешься сам.
Re[17]: О собеседованиях программистов
От: samius Япония http://sams-tricks.blogspot.com
Дата: 13.03.11 07:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, samius, Вы писали:


S>>Только линком называется не библиотека, а комплекс средств, большая часть из которых — языковые расширения. Некоторые из них не доступны в C++/CLI — анонимные типы, екстеншн методы, Query expression. теряюсь даже как там с лямбдами и замыканиями для CLI.


VD>Кстати, есть такой язык — F#. В нем нет анонимных типов и методов-расширений, но тем не менее LINQ поддерживается. Даже свой синтаксис имеется.


Может пример? Что-нибудь вроде Linq2Objects с комбинированием нескольких методов System.Linq, без рукописных оберток...
Re[21]: О собеседованиях программистов
От: samius Япония http://sams-tricks.blogspot.com
Дата: 13.03.11 07:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Рядом я привел пример. Может грязи чуть больше, но оно работает и выглядит вполне прилично. В F# только через конвеерный оператор |> линк и можно использовать. Причем даже с деревьями выражений можно работать.


Можно пример использования в F# линка через |> без оберток методов?
Re[2]: О собеседованиях программистов
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.03.11 15:16
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Wissenschaftler, Вы писали:


W>>Даже при собеседовании на архитекторские позиции с большей вероятности будут вопросы а-ля назовите 15 паттернов за 10 секунд и чочо обозначает мохнато-пунктирная линия в UML, чем опять-таки умение оценивать проблему и разбивать "неохватываемое" решение на реалистичные шаги.


L>New Interview Questions for Senior Software Engineers


Да, это уже более-менее вменяемый список. Конечно, он адаптирован на "внутреннее ПО" и имеет явную тягу к миру C++, но может быть адаптирован под любую специфику.

Осталось научить его применять HR'ов (ой, не доживу).
The God is real, unless declared integer.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.