Какие темы изучить для прохождения отбора на Python?
======================================================

 Доброго времени суток!  

Я студент третьего курса очень не престижной специальности колледжа по специальности: "Информационные системы". Знания давали паршивые, что в математике(ее вообще не было xD). Что в базах данных, что в компьютерных сетях, да в том же программировании был Pascal. И не говорите мне что он залаживает базу. Базу залаживают такие науки как математика, физика и другие фундаментальные науки. Pascal лишь устаревшая технология.  

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

Мой стек технологий:   

HTML/CSS на уровне верстки макетов с помощью Flexbox  

Python  

Java(Был забыт мной нафиг)  
  

Задача стоит пройти отбор по программированию на языке Python.   

Я думаю мне потребуются:   

знания алгоритмов и структур данных,   

повторение школьного курса математики,  

введение в дискретную математику,   

много материала по практическому применению Python(Кроме Checkio.org)  

Введение в базы данных  

Понимание архитектуры RESTful  

На все это у меня есть пару недель.(Поверьте я псих, и не такое могу)  

Главное это материал по: задачам по программированию (в общем и с применением Python) и математика, какие знания математики мне потребуются? Школьную программу могу повторить что еще?  

Какие материалы посоветуете? На Видеокурсы времени нет! Нужна текстовая информация!  

Из некоторого материала который я собираюсь использовать, это: checkio.org, Python 3 (Дронов, Прохоренок), Грокаем Алгоритмы, Шэнь - программирование и теоремы, Хахаев - практикум по алгоритмизации по Python  
  

Что вы посоветуете мне? Особенно интересует тема математики!  
  

Спасибо. 

 Во-первых: "На все это у меня есть пару недель.(Поверьте я псих, и не такое могу)" - нет, не можешь. За пару недель можно изучить некоторые технологии, но научиться правильно думать нельзя.  

Во-вторых: "На Видеокурсы времени нет! Нужна текстовая информация!" - видео усваивается лучше. Но, в целом, нужно комбинировать все возможные ресурсы.  

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

Непосредственно подготовка:  
[Cracking the Coding Interview](https://www.amazon.com/dp/0984782850)  
[Elements of Programming Interviews in Python](https://www.amazon.com/dp/1537713949)  

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

Тренируй problem solving скилл на специальных сервисах. Популярные: https://leetcode.com, https://www.hackerrank.com, <https://practice.geeksforgeeks.org>  

Нужно не просто решать задачи, а учиться это делать правильно, походу изучая алгоритмы, структуры данных и анализ сложности. Грокаем алгоритмы - хороший выбор. Будет отлично, если найдешь друга, с которым можно будет тренировать witeboard'ы, когда один берет на себя роль интервьюера и задает другому задачу. Это важно. Так вы сможете разобраться, где и почему вы застреваете и научитесь правильно выстраивать мыслительный процесс при решении задач. По большому счету, это твой основной навык как программиста, именно его и будут проверять в первую очередь при собеседовании на работу. По крайней мере, должны. Если спрашивают только конкретные технологии, то тебе стоит задуматься, стоит ли у них работать. (Подсказка: нет)  
  

Изучай ООП и Паттерны проектирования.  
[Все доступно и с примерами](https://refactoring.guru/design-patterns).  
[Видео по одной популярной книге](https://www.youtube.com/playlist?list=PLrhzvIcii6GNjpARdnO4ueTUAVR9eMBpc), которую тоже можешь начать читать.  
  

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

Например, вот хорошие ресурсы по питону:  

<https://www.amazon.com/dp/1593279280/>  

<https://www.amazon.com/dp/1593275994/>  

<https://www.youtube.com/watch?v=8DvywoWv6fI>  
  

Наконец, ты должен понимать, что нетехнические, т.н. софт-скиллы не менее (а в случае с джуном часто более) важны. Я не зря предлагал ресурсы на английском - этот язык разработчику знать важнее, чем любой язык программирования. Не знаешь, с чего начать? Посмотри "Полиглот. Выучим английский за 16 часов!", начни пользоваться <https://lingualeo.com> (там есть и тренировки и курсы)  
  

Окружи себя инфосферой: ютуб, твиттер, телеграм и пр.  

Мне, например, нравятся эти ребята:  

[https://www.youtube.com/channel/UCVbz7l0COUdLupcY4...](https://www.youtube.com/channel/UCVbz7l0COUdLupcY4YtYH0w/videos)  

<https://www.youtube.com/user/HexletUniversity>  

[https://www.youtube.com/channel/UC4xKdmAXFh4ACyhpi...](https://www.youtube.com/channel/UC4xKdmAXFh4ACyhpiQ_3qBw/videos)  

Они помогут тебе начать думать в правильном направлении.  
  

Удачи! 

 1) На какую должность ты хочешь поступить. Ибо Python:  
  

разработка под веб django/flask  

разработка под веб tornado/aiohttp (отличается от первого)  

разработка тестов в QA  

разработка devops спеков  

machine learning  
  

Каждое из этих направлений требует отдельные знания.  
  

2) Открой требования к вакансии, что хочешь - и иди пункт за пукнтом по требованиям. Изи. 

> не говорите мне что он залаживает базу

 Хорошую базу, ничем не залажаешь, а плохую и лажать не надо. 

 Расслабиться и готовиться к поступлению через год. Этот материал невозможно усвоить за такой срок не потому, что вы какой-то не такой. А потому, что полученные днём знания уйдут из краткосрочной памяти в долговременную только после отдыха и после многочисленных повторений. Если вы прочитаете 15 книжек за две недели - вы не усвоите материал ни из одной. Если вы хомо сапиенс, то вы чисто физиологически не сможете этого сделать. Мозг так не работает.  
  

p.s. "Закладывает", бро, "закладывает". Корни -лаг-, -лож-, все дела.