Извините, я не прав. Надо было вам сразу сказать, что вы эксперт по статистике преступление в Европе.
Ну, я не знаю, что там рассказывали японцы, но я был в городе, откуда можно достаточно быстро добраться на машине до Амстердама. В итоге мы на машине не поехали, потому что прислушались к мнению местных немцев, которые в Амстердаме бывали не один раз. Сарказм по поводу Японии совершенно не уместен. Надеюсь, вам известно, что Германия граничит с Нидерландами.
Немцы рассказывали, что лучше в Амстердам на машине не ездить, потому что Амстердам славится как раз тем, что там воруют машины.
С маленькой.
Совершенно не обязательно. Но тогда это не программист, а кодер.
Давали задачи по дизайну и алгоритмам. Одного спрашивали много по concurrency. Не понимаю, причем здесь архитектура
Могу только сказать, что я знаю парочку людей, которые устроились туда без АСМ бекграунда и без огромного опыта.
Не всех, а топовых. Но кроме них там еще много не АСМщиков. Ну и из этого не следует заключать, что АСМщики быстрее и качественнее разбираются в чем угодно. Возможно, этот как раз тот случай, когда на работе действительно нужно знание алгоритмов и структур данных.
1)
Весь ваш следующий абзац это допущения человека лично незнакомого с тем о чем говорит.Цитата из вики:
Тео́рия алгори́тмов — раздел информатики, изучающий общие свойства и закономерности алгоритмов и разнообразные формальные модели их представления.Вы и правда, участвуя в ACM, используете знания о общих свойствах и закономерностях алгоритмов и моделях их представления? Я изучал две отдельных дисциплины — «Теория алгоритмов» и «Алгоритмы и структуры данных» и эти дисциплины разные по сути своей, они изучают совершенно разное и с разной целью. Я участвовал в АСМ и мне трудно представить, как можно применить знание теории алгоритмов для решения олимпиадных задач. Знание алгоритмов и структур данных — можно, но это две разных дисциплины.
2)
Хороший АСМщик это больше чем просто набор каких-то знаний. Это умение ими пользоваться и немного другой способ мышления. Такой человек с нуля намного быстрее и качественней разберется практически в любой предметной области в которой будет нужно.АСМщики любят так о себе думать. Правда, никакой универсальной статистики, к сожалению, пока еще нету. Лично я не осмелился бы делать такие утверждения, не имея большого опыта работы, как с АСМщиками, так и с другими людьми. Иначе с чего такие рассуждения? Мне совершенно не понятно, почему, по-вашему, хороший АСМщик разберется, например, в топологии с нуля намного быстрее и качественнее, чем хороший математик. Как ему в этом помогут дополнительные знания алгоритмов и структур данных и опыт решения олимпиадных задач по программированию?
Я не говорю, что нужно обязателньо сидеть до ~22 лет не работая. Opensource это замечательно, свои хобби проекты тоже. Но это не должно мешать этапу становления твоих интересов, навыков. В это время надо бы посмотреть что вообще есть в computer science, чем люди занимаются, что тебя больше интересует, мозг свой развить.Когда я писал про opensource, я не пытался сделать акцент на том, что не работать до 22 лет — плохо и нужно быстрее идти на работу. Я хотел подчеркнуть, что помимо алгоритмов и структур данных в мире программирования есть другие не менее важные и сложные области, осваивать которые долго и сложно. Например, я не верю, что АСМщик, пусть даже очень опытный и хороший, с нуля очень быстро и качественно разберется с тем, что такое хорошая архитектура. Потому что для того, чтобы это понять нужен большой опыт, так само как и для того, чтобы стать топовым АСМщиком. И это тоже требует немалых интеллектуальных усилий.
Я лишь утверждаю, что человек изучающий теорию алгоритмов, хотя бы на базовом уровне курса хорошего западного универа, который своими руками эти алгоритмы имплементил, а еще лучше решал хотя бы не сложные олимпиадные задачи — в перспективе станет отличным разработчиком.
Я об этом.
Для топа АСМ нужно скорее много решать и читать разборы, Сэджвика можно вообще не читать.
Я не сказал бы, что таких людей было очень мало или даже просто мало. Более того, иногда возникали ситуации, когда оценка по предмету очень сильно коррелировала с посещаемостью.
Ну, тут, конечно, еще стоит определиться с тем, о каком именно мех-мате мы говорим. Я, например, знаю человека, который перевелся учиться на мех-мат, где учился я, с мех-мата другого города, потому что там, по его словам, был полный беспорядок, а у нас все более организованно и учиться сложнее.
То есть, если сравнивать студентов с разных мех-матов со средним балом 3.5 и 4.5, может оказаться, что студенты со средним балом 3.5 знают лучше.
Вообщем, проверять знает ли конкретный человек какой-то конкретный предмет лучше всего в формате собеседования.
Во-первых, мне, честно говоря, не совсем понятно, как олимпиадные задачи связаны с теорией алгоритмов. На сколько я помню, в олимпиадных задачах требуется придумать и реализовать алгоритм или структуру данных, а это скорее относится к дисциплине «Алгоритмы и структуры данных», которая в хороших западных университетах идет отдельно от дисциплины «Теория алгоритмов». Ну и эти дисциплины разные по сути своей.
Во-вторых, на сколько я помню, олимпиадные задачи, в частности формата ACM, не требуют понимания того, что такое хорошая архитектура системы или, например, не требуют знаний мпогопоточности, а ведь освоить все это не легче, чем, например, прочитать и понять книжку Сэджвика по алгоритмам и структурам данных. То есть, выходит, человек, который занимался олимпиадами имеет дополнительные знания по алгоритмам и структурам данных, но вполне может не иметь других важных фундаментальных знаний. Здесь надо бы определиться, что вы вкладываете в понятие «отличный разработчик», потому что, с учетом всего выше сказанного, получается, что у человека с advanced знанием алгоритмов и структур данных, коими обычно являются бывшие ACMщики, шансов стать отличным разработчиком больше только в том случае, если речь идет о разработчике, работа которого требует продвинутого знания алгоритмов и структур данных. Если же речь зайдет о хорошем архитекторе, то у кого, по-вашему, будет больше шансов им стать — у человека, который, к примеру, с младших курсов был вовлечен в разработку приложений (opensource, к примеру), или у того, кто занимался ACM?
Люди, которые получают красный диплом на мехмате, с большой долей вероятности отлично знают мат. дисциплины. Но навыков, востребованным рынком труда это не прибавляет.Отнюдь. Учился там, знаю о чем говорю. Особенно если речь идет о красном дипломе магистра, потому что его дают только с учетом оценок в магистратуре, где половина предметов это всякие охраны труда и социологии. А если говорить вообщем, то идея об объективности оценки знаний на таких факультетах, судя по моему опыту, переоценена. На моей памяти довольно много случаев, когда люди клянчили оценки, мотивируя это тем что «стипендию потеряю» или «повышенная слетит». Это не всегда срабатывало, но очень часто.
Не понял, что вы имеете в виду.
Вопрос в том, как хорошо эти 9 видов математики преподаются и усваиваются студентами. По-моему, в реалиях нашей системы образования, тот факт, что какой-либо предмет преподавался в рамках программы или даже факт наличия хорошей оценки в дипломе по этому предмету не являются свидетельством знаний.
Хм, ну а если, допустим, у заказчика есть возможность провести собеседования с обеими кандидатами — с профильным образованием и без, то кого, по-вашему, выберут — того, у кого образование профильное или того, кто собеседование лучше прошел? Вы бы как поступили?
1) По поводу того, проверяет ли такая задача понимание кандидатом принципа работы связного списка: если вы считаете, что нет, это лично ваше мнение, в пользу которого есть как аргументы, так и контраргументы. Оно субъективное. Как и мое.
2) Что значит не эффективны? В моем понимании решение не эффективно, если оно не решает задачу. Но данная задача, как я уже писал выше, нужна для того, чтобы проверить понимает ли человек, как работает связный список или нет. Для того, чтобы ее решить, можно применить несколько разных подходов. Решение циклом требует меньше памяти, но не настолько, чтобы это было критичным, зато по сравнению с двумя другими оно более громоздкое. Другими словами, у каждого решения есть свои преимущества. Если человек, который собеседует кандидата, делает акцент на том, что нужно написать код, который требует меньше памяти, это уже другое дело.
3) Если не решил даже после нескольких подсказок, я бы заключил, что человек не понимает, как работает связный список
4) Написание относительно сложного кода на собеседовании — стрессовая ситуация. По вашему мнению, давая кандидату такую задачу, нельзя проверить понимает кандидат или нет. И все же многие компании, среди которых есть и очень известные, практикуют это. Я думаю, что там лучше понимают, какие техники применять для того, чтобы нанять хорошего кандидата.
1) Я заключил, что вы так предполагаете, потому что вы написали:
3) вы нарушили инкапсуляцию. Это так же критично для __джава программиста__
4) ну и дженерики в джава ...
5) Появляется подозрение ....
Вы пишете, что я нарушил инкапсуляцию. Вот лично я ничего не нарушал. Выше написано, почему я сделал набросок кода именно таким, каким я его сделал.
2) Здесь все же придется повториться: смысл таких задач не в том, чтобы проверить стиль разработки. В данном случае смысл задачи — проверить понимание у кандидата того, как работает связный список
3) Решение, которое я привел — корректно. В моем понимании решение не корректно, если оно не работает. Это одно из нескольких решений, которое хуже решения «в лоб» по памяти. Аналогичное решению со стеком — решение рекурсией, которое тоже требует O(N) дополнительной памяти. Идеи решений рекурсией и стеком по моему личному мнению интереснее, чем решение задачи «в лоб».
Если кандидат решил задачу несколькими способами, это хорошо. Если кандидат решил задачу хотя бы одним способом, это уже значит, что он понимает, как работает связный список.
У вас есть опыт?