Путь программиста
37 subscribers
50 photos
12 links
Каждый день пишу отчёт о проделанной работе💪
Download Telegram
День 58
Начался вчерашний день
с того что я начал учить вопросы на собеседование. Вчера я ошибся сказав что их около 300. Да, по Java так и есть, но если ещё брать фреймворки, т.е. сервисы которые упрощают программирование на Java, такие как Spring и все его сервисы, Hibernate, и ещё до 10 технологий которые необходимо знать, но более мелких. Так вот, считая их получается в общем больше 600 вопросов. Я рассчитал что если в день усвоить 10 вопросов от и до, то соответственно можно выучить все за 2 месяца, а воскресенье я сделаю днём повторение, буду бегло повторять что изучал за предыдущую неделю, и углубляться в темы которые я не понял.

Также вчера час отвёл на задачи JavaRush, решил 2 задачи и пытался вникнуть в тему который я сейчас прохожу + и ещё час на просмотр видео по GitHub. Научился как создать репозиторий и загрузить туда свои файлы и в общем как вся эта система работает.

Вчера я учился ровно 5 чистых часов по помодорро, что неплохо, но я уверен что можно больше без того чтобы словить выгорание.
День 59
Как я и говорил
, первую половину вчерашнего дня, я провел за вопросами к собеседованию. Было несколько тем, сначала многопоточность, потом ввод-вывод данных и закончил исключением, на каждую секцию вопросов отвёл по 1 часу. Выучил и повторил около 15 вопросов.

Есть такой метод в обучении, метод Фейнмана, когда ты должен объяснить собеседнику ( или самому себе) который вообще не разбирается в этой теме самыми простыми словами и, чтобы он понял о чем вообще речь. Считается что если не можешь что то объяснять простым языком с примерами, то значит ты сам тоже ничего не понял или понял частично.

Мне нравится этот метод, в нем есть доля истины, буду практиковать сегодня при повторении изученного материала.
Потом я час уделил задачкам из JavaRush и еще час на то чтобы разобраться с Github и вообще Git.

Вчера я учился 4.9 чистых часов по системе помодорро (скрин внизу). Систему я настраиваю так. Отключаю все отвлекающие сервисы типа мой сетей, мессенджеров и т.п. и учусь 1 час полностью погрузившись в материал, потом отдыхаю 10 минут, обычно вне компьютера и так по кругу. Когда вы отдыхаете, можно повторить что вы изучили за прошлый час, т.к. согласно исследованиям через 25 минут учебы забывается 80% материала.

P.S. пока нет никакой редактуры, поэтому тут нет литературного языка и красивых речей, просто мысли вслух😄 И подписывайтесь на канал, скоро будет жарко💪
День 60
Этот день был днём отдыха.
У меня было запланировано повторить весь пройденный материал и дальше заниматься чем захочу. На повтор вопросов по собеседованию у меня ушло около 1.5 часов + также углубился в некоторые вопросы и посмотрел примеры. Также пытался самому себе объяснить все простыми словами по методу Фейнмана.

Остальные 2.5 часа я удалил коллекциям в Java. Посмотрел видео Продвинутая Java от блогера программиста Алишева и наконец разобрался в чем отличаются List, Set и Map. Но там ещё столько подводных камней, что ещё учить и учить. Как говорят практики это самые используемые вещи в Java, так что их следует знать от и до. Еще немного посмотрел про алгоритмы и структуры данных, как основополагающее в программировании, это очень интересная и глубокая тема, также нужно изучить.

Сегодня планирую продолжить изучение вопросов по собеседованию. На это выделю 3 часа и покрою около 15 вопросов. Дальше хочу начать изучать SQL запросы по сайту sql-ex.ru и каналам на Ютуб.
День 61
Вчерашний день я чередовал темы и посвящал им по часу. Первый, третий и пятый час уделил вопросам по собеседованию. Честно говоря мало что нового узнал, просто повторил и выучил наизусть (надеюсь) вопросы. Было пройдено около 15 вопросам по темам объектно - ориентированное программирование, классы типа String, многопоточность.

В остальные 2 часа я проходил упражнения по SQL на сайте который вчера писал, сначала совершенно не понимал что делать и как работать с этой системе, но по прошествии пар видео и нескольких статей я быстро решил 7 задач. В принципе этот "язык" очень простой и логичный, поэтому через неделю я уже полностью привыкну к нему.

Также вчера немного посмотрел видео про Maven. Это такая технология, которая собирает воедино твой код, связывает его со сторонами библиотеками и т.д. и выдает один файл похожий на .exe через который другие могут установить твою программу, но тут выдается файл .jar или для веба .war (если ничего не путаю). Надо углубиться в эту технологию, чем скорее, тем лучше. Его всегда требуют на собеседовании.

Вчера я занимался 4.8 часов, не смог дотянуть 10 минут, т.к. уже было поздно😄 В общем уже солидно, почти 200 часов, думаю на уровне 500-700 часов я буду вполне способен писать свои проекты и проходить собеседования.
День 62
После написания отчёта вчера я принялся учить вопросы к собеседованию. В предыдущем отчёте я говорил что материал уже вторичен в каком то смысле, но на самом деле если углубляться в вопросы узнаешь много интересного, я так и сделал.

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

Также нашел крутой сайт w3schools.com/sql по изучению и объяснению SQL, там даются примеры в которых нужно вставлять недостающие слова и даётся теория с примерами, но все на английском языке. Там простенькие примеры, но позволяет ознакомится с синтаксисом языка.

Еще посмотрел пару видео про регулярные выражения. Это такие выражения которые используются для того чтобы в тексте или файле который ты подгружаешь найти какие то символы. Например вот такое выражение [a-zA-Z] находит в тексте все английские буквы, а дальше можешь сортировать как хочешь. Можешь найти один символ, два, любое сочетание в огромных файлах. Тоже очень интересная тема, которую стоит изучать. Как я понял, они есть и во всех остальных языках.

Вчера я учился ровно 5 часов по системе помодорро. Кто хочет скачать эту программу, вот ссылка www.focustodo.cn я сижу на бесплатной версии, хотя ее урезали недавно, и теперь статистику по прошлым неделям смотреть нельзя😒 Также планирую с 10 сентября начать учить фреймворк Spring, думаю моих знаний уже на это хватает, хотя вчера исполнилось всего 2 месяца как я этим всем занимаюсь👨🏻‍💻
День 63
Вчера я чутка приболел, поэтому мало что усвоил из материала, хотя учился 4 часа. Читал по Java и вообще не понимал что там написано, пытался видео смотреть, немного легче стало. Потом я
переключился на SQL и посмотрел несколько видео. Понял, чем различаются всякие формы Join, это слово для присоединения одной таблицы к другой и в общем зачем нужны базы данных и каких видов они бывают.

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

Наконец понял зачем вообще нужен Spring, посмотрел 1 вводное интервью по нему. На нем в основном делают веб приложение. А чем отличается веб приложение от веб сайта? В этом я тоже разобрался, вот статья , в основном отличия тут в названии, веб приложения это те же приложения которые установлены на вашем компьютере, только в формате веб. Например всякие подобии фотошопа, которые действуют в вебе это приложение, тут преимущества веб приложения в том что такой сайт кроссплатформенный, т.е. не нужно для mac, pc, linux и т.д. создавать отдельные программы, все можно сделать прямо на сайте. И обратите внимание, что в веб приложениях сама страница не обновляется при переходе на какую либо другую страницу. Например, если вы зайдете на фейсбук, то и зайдете к другу, то верхняя плашка останется , она не перезагрузится, т.к. сайт фейсбука является веб приложением тоже. В-общем, такое вот новичковое представление о веб приложениях.

Сегодня в планах учиться минимум 5 часов и изучить 10 вопросов по собеседованию + посмотреть несколько видео по sql и поработать с базами данных. Всем удачного дня💪
День 64
Продолжаю болеть, в этот день трудно было сконцентрироваться из за боли в горле, занимался 4.1 час по помодорро. 1 час - изучал вопросы по собеседованию, на этот раз были коллекции, выучил определение, структуру и определение основных коллекций.

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

2 час - ООП, 3 час также ООП, но уже другую ее часть. 4 час я немного поделал упражнения по SQL и почитал теорию по нему и посмотрел видосы. Эффективность дня оцениваю на 3. Сегодня планирую поработать хотя бы 5 часов, утром 3 часа, вечером 2 или более. Всем продуктивного дня!
День 65
Боль в горле прошла, потом поднялась температура к вечеру, и все что я успел это 3 часа. Вернулся к Javarush, и наконец преодолел 18 уровень, понимание входного и выходного потока улучшилось, по регулярными выражением также стал лучше понимать. На 19 уровне была задача с форматированием, эту тему тоже нужно подтянуть.

Также посмотрел несколько видео по фреймворку Spring, ознакомился с основными принципами и с 10 сентября начну с ним плотно работать.

Сегодня не буду ничего планировать, т.к. болею и возможно не смогу поработать. Всем желаю здоровья и продуктивного дня 💪
День 66
Со здоровьем все восстанавливается, а вот с рабочим временем нет. Вчера я учился около 2 часов, но это были очень продуктивные два часа. Сначала утром я посмотрел видео по собеседованию java программиста (это не считается за учебу), и там много вопросов было про алгоритмы. И я понял, что мало разбираюсь вообще во всем это и паралельно задал вопрос в форуме Javarush “А спрашивают ли про алгоритмы новичков?”. И мне ответили что про алгоритмы сортировки не так часто, а вот про алгоритмы поиска почти на каждом собеседовании. И я начал искать материалы на эту тему.

Самое лучшее что нашел в текстовом варианте это вот это статья на Хабре . Здесь рассказывается об основных алгоритмах сортировки и поиска в Java. В основном их 3. 2 алгоритмы сортировки под примитивы и ссылки и один под поиск. Так что, их можно выучить и попрактиковаться пару дней и закрепить, чтобы не было фейлов на собеседовании. Думаю про более сложные алгоритмы новичков не будут спрашивать. Также посмотрел интересное видео про бинарный поиск, который и используется в Java. Даже если вы не занимаетесь программированием, это очень интересно посмотреть.

Также вчера я сделал резюме на hh. Сегодня утром прилетело приглашение на позицию тимлида, но я думаю что еще не готов😁. Требуемый опыт 3-6 лет. На несколько вакансий откликнулся, будем смотреть что напишут в понедельник.

Сегодня мне намного лучше, постараюсь учиться 5 и более часов по помодорро. Я учитываю только учебу, а так я почти весь день что то смотрю и читаю по теме, например интервью или интересные статьи, но я их не учитываю в учебе. На этом все, подписывайтесь, всем продуктивного дня💪
День 67
Вчера был хороший день, особенно по сравнению с предыдущими. Учился я 5.2 часа и наработал за эту неделю всего 28 часов, что мало, нужно хотя бы 30 часов в неделю, чтобы не отставать от графика и освоить весь материал. Вчера смотрел видео, где человек говорил о том что, чтобы стать программистом с нуля нужно 1000 часов. Я думаю это приближено к правде, но мне хочется устроится на работу на уровне 500-700 часов. Да, такой человек не будет супер специалистом, но я не имеет смысла ждать, когда же все выучишь. Следует уже на таком уровне начать ходить на собеседование.

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

Но до этого вчера я продолжил учить алгоритмы. Там же на hh был вопрос про сбалансированное дерево, на который я не знал ответа и в интернете тоже мало информации об этом. Просто многие сразу имеют ввиду именно это дерево, но как бы говоря про обычное, которое никуда не годится и вот если бы мне задали этот вопрос, я бы не знал что отвечать, но на самом деле нужно было просто рассказать про “обычное бинарное дерево” которое по умолчанию есть в Java. Сбалансированное дерево это АВЛ дерево или еще бывает красно-чёрное дерево. Все они меняют свои так скажем ветки, при условии добавлении новых элементов с какой-то математической формулой. Благодаря этому, не получается так, что древовидная структура превращается в список.

Сегодня я стал на год взрослее, поэтому не знаю, смогу ли много времени уделить учебе, но наверстаю за последующую неделю. Всем продуктивного дня, подписывайтесь!
Тут показано, как меняется АВЛ дерево при добавлении нового элемента
Какие книги изучать?
Вот список по фундаменту в Java и SQL:
Кэти Сиерра, Берт Бейтс — Head First Java;
Брюс Эккель — «Философия Java»;
Гербер Шилдт — «Java 8, Руководство для начинающих»;
Роберт Лафоре — «Структуры данных и алгоритмы Java»;
Алан Бьюли — «Изучаем SQL».
День 68
В связи в др вчера не удалось поработать в полную силу (4 чистых часа по системе помодорро). Я просмотрел 8 видео про Java EE который используется в больших компаниях, и все выполнил на редакторе + создал свой локальный сайт и экспериментировал с ней. Ссылка на плейлист. Java EE это набор спецификаций для работы на высоконагруженных серверах.Простыми словами, мелкие веб приложении (aka сайты) используют Java SE, т.к. еще мощности и удобства им хватает. А сайты по типу Сбербанка не могут себе таким пользоваться. Им нужен более мощный инструмент. Основная цель спецификаций — обеспечить масштабируемость приложений и целостность данных во время работы системы. Также в дополнение к этому здесь есть такая штука как JSP, в который можно одновременно писать и HTML код и Java код. Так, я вчера тоже познакомился немного с HTML, хотя и до этого много раз его видел.

А вот уже на Java EE накладывается фреймворк Spring для облегчения работы с ней, т.к. Java EE очень замороченная. Spring вообще сейчас много чего делает, и базы данных и веб приложения и много еще чего, но пока я в этом не так глубоко разобрался. Мне сегодня осталось досмотреть 2 видео по Java EE, дальше собираюсь прогнать вопросы по собеседованию и если останется время, то еще немного решу задач по SQL.

Также, всем кто смотрит Twitch, рекомендую посмотреть методики этого стримера по обучению (в описании, текст на английском). Я его включаю на фоне, чтобы мотивироваться учиться (он каждый день учиться по 14+ часов). Подписывайтесь, и всем кто пришел вчера Привет! Всем продуктивного дня💪
День 69

Т.к. вчера должен был по семейным обстоятельствам отойти, я очень быстро выучил 10 вопросов и посмотрел ещё 2 видео плейлиста по Java EE. На все про все ушло 2 часа и на этом учеба закончилась.

Сегодня и ещё несколько дней буду занят, но я постараюсь пару часов уделять учебе, а дальше уже нужно наверстать упущенное и с двойной силой больше учиться. Надеюсь все ещё успеть в установленный срок устроится на работу, до 1 декабря.

Всем желаю удачи и продуктивного дня!