Резюме для программиста
Рыбе на крючок можно насадить что угодно, главное чтобы заглотила.
В общем, понятны отказы. Куцый уж больно резюм, без искорки. опыт работы 10 лет-это просто замечательно, особенно на одном месте.
Не знаю, написали ли выше, но вот что мне лично не нравится снизу вверх:
1). Mittelschule замени на Gymnasium c Abschluss Abitur. или вообще не пиши.
2). Напиши темы твоих дипломных работ и, если релевантно, то используемые технологии.
3). Ты же наверняка ходил на какие-нить курсы повышения квалификации в Новосибе? Перечисли все. Если есть сертификаты, то тоже добавь. Туда же местные шпрахкурсы с организацией.
4). Три пункта про опыт работы. У тебя же не только менялось название должности, но и обязанности тоже, правда? Да и технологии не стояли на месте. Допиши проекты и свою в них роль. Каждую программулю/скриптулю можешь назвать проектом и перечислить все тулзы и фреймворки. если что-то делали для заказчика или по выделенному гранту, то тоже пиши кто и что. И убери даты. Только месяц и год.
5). Актуальная ситуация. Никаких пауз и пробиере. 2019- Umzug nach Deutschland: Совершенствование немецкого языка; самостоятельное изучение фреймворков.... Здесь можно вставить ссылку на гитхаб.
6). пункт скилзы. личные качества и знание языков опусти вниз под образование. Можешь добавить еще русский язык как родной. За последний год мне пришло минимум 3 предложения, где нужен русский. Это может оказаться твоим шансом.
ну и в пункт софтвареентвиклер добавь вот прям каждую библиотеку, с которой работал, каждый ИДЕ, GIT. кого еще там видел, Transact-SQL не забудь. Побольше ключевых слов, короче... И расставь всё в определенной последовательности. Сначала- с чем работал и очень хочешь работать, ну и остальное...
7). Stack overflow убери.
8). Место рождения убери и лучше добавь номер телефона.
Аншрайбен вообще никуда не годиться. Лучше вообще без него рассылать.
В сопроводиловке ты должен убедить работодателя, что ты крутой специалист, пусть даже просишься на юниорскую позицию. Блеянье про тут чуток, да там пробую для чела с 10 годами опыта как-бы не комильфо. Нормальные фирмы после такого аншрайбена уже и в резюм смотреть не будут.
Возьми рыбу из инета и вставь свои технологии и данные.
Это всё советы из разряда очевидных и примитивных.
Но почему то приведённом коде не используемых
Если Вы на собеседовании будете отвечать точно как на форуме, то шансы у вас будут минимальные найти работу.
Главное - это неуверенность в себе. Я понимаю, что выпендриваться не привыкли, но слишком низко опускать себя тоже не следует.
Свое мнение без дополнительных вопрос тоже лучше держать при себе.
Вот полезли в базы и сразу показали, что и базу нормально не разработаете. Выберите себе область и там плавайте. На остальное без комментариев, либо да делал, либо нет не делал, но могу выучить.
Hryu , спасибо за советы.
Но почему то приведённом коде не используемых
Например? В том куске, где я Serialize пишу? Я бы там, может быть, изменил возврат с массива байт на IEnumerable и, соответственно, не делал бы .ToArray() в конце при возврате - типа "ленивая" реализация.
Ну ещё, может, то, что я много лишних промежуточных переменных ввожу, типа Length в отдельную сохранил, когда можно было сразу считать и в байты перевести. Но это всё мелочь - это не ошибка там или какой-то баг. Я когда протокол передачи данных разбирал, нужно было держать в памяти длины в байтах для разных значений, поэтому мне показалось удобнее даже незначительные вещи вытащить в отдельные переменные с осмысленным названием - ещё удобно было вытащить из в наблюдение в дебаггере (watch) и отслеживать осмысленные названия, а не просто Length непонятно чего. Ну а потом просто так всё и осталось.
Но вообще да, прямо везде и в каждом месте я всем принципам не следую. Не специально, а просто забываю. Особенно когда нужно "на коленке" и "ещё вчера". Часто надо было код переписывать прямо рядом с работающим двигателем, с нервно стоящими вокруг дядями в пиджаках. Потом приезжал в офис или домой и пытался переписать получше.
Вообще вся эта разработка с Лабвью была чередой постоянных переписываний прототипов и авралов - нужно было то к выезду подготовиться на какую-нибудь фирму, то к конференции, то "у вас два часа работы на стенде, потом сворачивайтесь". Это не по готовым спецификациям и архитектуре функции кодом наполнять. )))
но сломается ORM
-----
Учись читать!
Бо, какой ОРМ? Вопрос был адресован ДБА...
лучше подождать
-----
Конечно - лучше!!!
Особенно в свете того, что вопрос ставился - как это сделать быстрее...
В том куске, где я Serialize пишу?
Ну так другого и не было
это не ошибка там или какой-то баг
Конечно нет, но такой код я не хочу видеть в нашем проекте.
Часто надо было код переписывать
Ну вот чисто для поиграться попробуйте прведенный фрагмент переписать. Чтобы любой член команды мог читать любые данные из других устройств. Ну или на крайний случай просто сделать код лучше.
А кто сказал, что задавать нужно узконаправленные технические вопросы?
Murr...
Да, к ДБА. У вас в базе есть большая таблица без ключей. Ваша задача - опустошить ее как можно быстрее. Что вы будете делать?
Вот почему интересно вам не запрещают писать так много, а меня постоянно тут затыкают и выгоняют? Пришлось аж на свой сайт к себе уйти... Ну может быть с точки зрения антимасочников и антипрививочников я глупый, но зато привитый. Вот сейчас третью дозу вакцины жду. Если вам трудно найти работу, то лучше идти как я на пенсию..., но у меня реально проблемы, я шизоид-аутист, я слышал что в России шизоидам дают вторую группу, у меня 80%. Будете делать/изучать то что вам нравится, и ложиться/ставать когда захотите. Я вот осваиваю каждый день новые компьютерные программы... сейчас балуюсь в химеру см. https://www.youtube.com/watch?v=xKcF42FFoao, поставил BioClipse см. https://sourceforge.net/projects/bioclipse/ но JMol не могу подключить к BioClipse. JMol https://sourceforge.net/projects/jmol/ установлен у меня отдельно. BioBlender что-то скачать не получается http://www.bioblender.org/, или скачивается совсем не то... Но лет 10 назад пользовался им.
Если вам трудно найти работу, то лучше идти как я на пенсию
Я ещё в Германии толком не пытался - только начинаю. Мне никто пенсию не даст - мне ещё 40 нет. ))
Вот почему интересно вам не запрещают писать так много, а меня постоянно тут затыкают и выгоняют?
Да я, вроде, пару-тройку раз в день пишу в своих темах в основном. До этого полгода не писал.
Ну вот чисто для поиграться попробуйте прведенный фрагмент переписать. Чтобы любой член команды мог читать любые данные из других устройств. Ну или на крайний случай просто сделать код лучше.
В зависимости от того, соблюдаются или не соблюдаются конвенции по передаче данных по сети, решение будет отличаться. Вот тут написано
"A common convention is to transmit data in network byte order".
Т.е., как я понимаю, порядок передаваемых байт по этой конвенции задаёт сервер. Если у меня плата Лабвью и мой компьютер подсоединены через маршрутизатор - то маршрутизатор (точнее, endianness его процессора) и задаёт порядок байт.
В самом общем случае, когда конвенции не соблюдаются (или неизвестно, соблюдаются они или нет), а также никакой договорённости с узлом сети, с которым вы общаетесь, о порядке байт или как его узнать нет, то невозможно с первого раза правильно расшифровать сообщения другого узла. Нужны тесты - до тех пор, пока сообщения не станут осмысленными (т.е. вам удалось правильно их расшифровать). Но в самом общем случае, когда узел не посылает вам тестовых сообщений (типа хотя бы 16-битной единицы, у которой вы можете взять первый байт и посмотреть - 01 он или 00), а каков истинный смысл сообщений вы не знаете (т.е. вам не с чем сравнить правильность расшифровки), то задача становится не решаемой в принципе - т.е. написать наиболее универсальный код, подходящий для любого случая, невозможно.
Т.е. либо мы соблюдаем общепринятые конвенции (общаемся в порядке байт сети), либо у нас есть свои договорённости (типа первого тестового сообщения). В зависимости от этого будет немного отличаться и решение. Если мы соблюдаем конвенции, то просто передаём данные в сеть в её порядке байт. У C# для трёх типов данных есть для этого встроенные функции, типа таких IPAddress.HostToNetworkOrder Method (System.Net) | Microsoft Docs
Если надо для других типов, типа uint или ещё чего-то, то лучше узнать порядок байт сети и потом реверснуть его "руками". Варианты реверса - от банального метода Reverse по коллекции байт, до побитовых сдвигов Reverse Bytes (Little/Big Endian) [C#] (csharp-examples.net) (опять же, побитовый сдвиг для других типов данных должны написать сами). Мне проще использовать Reverse по коллекции, чем руками двигать битики. Если же речь идёт о сверхпроизводительной системе, которая должна с максимальной эффективностью общаться по сети с правильными сдвигами байт, то лучше, наверное, написать такой модуль кода общения по сети на другом языке, а не на C#. Из C# можно вызывать этот модуль.
Как узнать порядок байт сети? Я не нашёл готовой встроенной функции в C#. BitConverter.IsLittleEndian даёт порядок байт текущей машины (хоста), IPAddress.HostToNetworkOrder даёт сразу число в порядке байт сети, но не отвечает на вопрос, какой порядок байт сети (хотя внутри себя наверняка это выясняет). Т.е. вы должны узнать порядок байт хоста, взять любое тестовое число на хосте и привести его к порядку байт в сети. Далее побитово сравнить его (или просто сравнить числа) с тестовым числом на хосте и если они равны, то порядок байт сети равен порядку байт хоста. Теперь мы знаем, надо ли реверсировать все данные при отправке их в сеть. Соответственно, код моего фрагмента переписывается через if(порядок байт сети равен порядку байт хоста).
Далее можно поспорить, нужно ли реверсировать через IEnumerable.Reverse или через Array.Reverse, нужно ли конкатенацию делать через IEnumerable или через Array.Copy, но меня уже достало писать. ))) Если производительность не важна и IEnumerable отрабатывает достаточно быстро и не ест много памяти, то проще использовать его, т.к. это читабельнее. В нашем случае поток данных был не сильно большим, общение с платой по сети не было узким местом, поэтому я оставил как есть. Итого по улучшению кода - только добавить определение порядка байт сети и соответственно определять, реверсировать ли данные или нет.
Проблема только в том, что человек, который писал код для Лабвью, про порядок байт не слышал (как я понял), и писать с учётом этой особенности не хотел, хотя я ему про это говорил. У него как-то работало на его плате и машине, и он был доволен. Поэтому я просто подстроился под него (и его железо) и написал, что реверсировать байты буду всегда, без определения порядка байт. Если его код для Лабвью начнёт работать на другом процессоре, где порядок байт не такой, как на ARM, всё сломается.
Т.е. чтобы с моим кодом работали другие разработчики с разным железом, они должны следовать конвенциям. Вы при приёме на работу спрашиваете, следуют ли они конвенциям при работе с сетью, и какие вообще конвенции в каких случаях бывают? Ну вот этот порядок байт сети, порядок записи вершин полигона при текстурировании, приоритет и ассоциативность в операторах, 2х2=4, что там ещё в разных областях есть? DRY, KISS - это всё фигня и общие слова - там по каждому пункту спорить можно, когда и как это применять. А важны те десятки и сотни мелких и больших соглашений, которые действуют при той или иной работе, и с которыми не поспоришь. ))
Как узнать порядок байт сети?
никак, если есть только массив неизвестных данных.
Но пока есть только два варианта. Используем либо тот либо иной. Автоматика переключения не требуется.
чтобы с моим кодом работали другие разработчики с разным железом
Код просто нормально должен быть написан.
Но вообще, у нас слишком разные представления о качестве написанного кода и о том как оно достигается.
Возрастной фактор почти исключает данное действие.
А что есть какая то общеизвестная граница? А то я всё жду, жду....
Мурр так же сказал когда оn задал этот вопрос.
На собеседовании. Ваставив человека, который вел собеседование и будет принимать решение, дураком.
Вы при приёме на работу спрашиваете, следуют ли они конвенциям при работе с сетью
Это так критично? Например есть код. Старый и сложный. Но полностью работающий. В этом кодя когда то проггеры накосячили и вместо использования стандарта использовали какую то самопальную фигню. Вы по работе столкнулись с задачей что то несколько подправить. Но в ядро не лезть. Уволитесь? Наотрез откажитесь работать с кодом, в котором что то "исторически сложилось"?
Это так критично? Например есть код. Старый и сложный. Но полностью работающий. В этом кодя когда то проггеры накосячили и вместо использования стандарта использовали какую то самопальную фигню. Вы по работе столкнулись с задачей что то несколько подправить. Но в ядро не лезть. Уволитесь? Наотрез откажитесь работать с кодом, в котором что то "исторически сложилось"?
Ну, обычно оно всегда так. "У нас очень строгие стандарты. Вы должны писать поддерживаемый код. И чтобы другие программисты могли им нормально пользоваться."
А потом - "да тут старый и сложный код... старые прогеры накосячили, вместо стандарта писали как бог на душу положит... но всё работает как часы, так что ты тоже следуй их логике и поправь там немножко".
Строгость вопросов на собеседовании компенсируется необязательностью их исполнения в работе - как-то так обычно происходит.
Код просто нормально должен быть написан.
Но вообще, у нас слишком разные представления о качестве написанного кода и о том как оно достигается.
Вы бы могли пример привести или сказать, как нужно нормально переписать мой код?
Я сказал, что нужно добавить определение порядка байт сети и, если надо, инверсия байт в данных руками перед их отправкой. Руками, т.к. трёх встроенных функций может быть недостаточно. Если обмен идёт лишь числами в 16, 32, 64 бита, тогда достаточно и ничего проверять и инвертировать не надо - пользуемся встроенными функциями. Ну и ещё договориться, что нужно собладать стандарты и слать данные в порядке байт в сети. Или договориться о своём стандарте. Если никто ничего не соблюдает, не договаривается и узнать правила, по которым формируются сообщения, которые тебе приходят, невозможно, то невозможно и написать универсальный код, который бы сразу правильно расшифровывал сообщения.