Skip to content

Commit 8e10fbe

Browse files
committed
seo
1 parent 84806cc commit 8e10fbe

6 files changed

Lines changed: 132 additions & 8 deletions

File tree

docs/assets/css/brand.css

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,38 @@ body {
151151
color: var(--javajub-ink);
152152
}
153153

154+
.md-sidebar--primary .md-nav__item--section > .md-nav__link {
155+
background: linear-gradient(90deg, rgba(255, 61, 0, .10), rgba(255, 61, 0, .025));
156+
border-left: 3px solid var(--javajub-accent);
157+
border-radius: 6px;
158+
color: var(--javajub-ink);
159+
font-weight: 700;
160+
margin: .2rem 0 .35rem;
161+
padding: .45rem .6rem;
162+
}
163+
164+
.md-sidebar--primary .md-nav__item--section > .md-nav__link:hover {
165+
background: linear-gradient(90deg, rgba(255, 61, 0, .14), rgba(255, 61, 0, .04));
166+
color: var(--javajub-accent-dark);
167+
}
168+
169+
.md-sidebar--primary .md-nav__link--active {
170+
background: rgba(255, 61, 0, .075);
171+
border-radius: 6px;
172+
color: var(--javajub-accent-dark);
173+
font-weight: 700;
174+
}
175+
176+
.md-sidebar--primary .md-nav__item .md-nav .md-nav__link {
177+
border-left: 2px solid transparent;
178+
padding-left: .7rem;
179+
}
180+
181+
.md-sidebar--primary .md-nav__item .md-nav .md-nav__link:hover,
182+
.md-sidebar--primary .md-nav__item .md-nav .md-nav__link--active {
183+
border-left-color: var(--javajub-accent);
184+
}
185+
154186
.md-typeset .md-button,
155187
.md-typeset .md-button--primary {
156188
border-color: var(--javajub-accent);

docs/assets/css/quiz.css

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,24 @@
5858
margin-top: .2rem;
5959
}
6060

61+
.quiz-mode em {
62+
border-radius: 999px;
63+
background: var(--javajub-accent);
64+
color: var(--javajub-accent-contrast);
65+
display: inline-flex;
66+
font-size: .72rem;
67+
font-style: normal;
68+
font-weight: 700;
69+
margin-left: .45rem;
70+
padding: .12rem .45rem;
71+
vertical-align: .08rem;
72+
}
73+
74+
.quiz-mode-summary {
75+
color: var(--md-default-fg-color--light);
76+
margin: -.2rem 0 .85rem;
77+
}
78+
6179
.quiz-mode.is-active,
6280
.quiz-choice.is-selected {
6381
background: color-mix(in srgb, var(--javajub-accent) 5%, #fffdfb);

docs/assets/js/quiz.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@
6363
window.javajubTrack(eventName, props);
6464
}
6565

66+
function quizQuestionCount(quiz, mode) {
67+
return Math.min(mode.questionCount, quiz.questionCount);
68+
}
69+
70+
function syncModeToUrl(modeId) {
71+
const url = new URL(window.location.href);
72+
url.searchParams.set("mode", modeId);
73+
window.history.replaceState({}, "", url);
74+
}
75+
6676
async function initQuizApp(app) {
6777
if (app.dataset.quizInitialized === "1") return;
6878
app.dataset.quizInitialized = "1";
@@ -115,10 +125,12 @@
115125
</section>
116126
<section class="quiz-panel">
117127
<h3>Режим</h3>
128+
<p class="quiz-mode-summary">Сейчас выбран <strong>${escapeHtml(mode.title)}</strong>: до ${mode.questionCount} вопросов. После выбора режима нажмите «Начать» у нужной темы или компании.</p>
118129
<div class="quiz-modes">
119130
${catalog.modes.map((item) => `
120131
<button class="quiz-mode ${item.id === mode.id ? "is-active" : ""}" type="button" data-mode="${item.id}">
121132
<strong>${escapeHtml(item.title)}</strong>
133+
${item.id === mode.id ? `<em>Выбрано</em>` : ""}
122134
<span>${item.questionCount} вопросов · ${escapeHtml(item.description)}</span>
123135
</button>
124136
`).join("")}
@@ -131,8 +143,8 @@
131143
<button class="quiz-secondary" type="button" data-weak-retry="1">Повторить слабые темы</button>
132144
</section>
133145
` : ""}
134-
${renderQuizGroup("Тесты по темам", topics)}
135-
${renderQuizGroup("Тесты по компаниям", companies)}
146+
${renderQuizGroup("Тесты по темам", topics, mode)}
147+
${renderQuizGroup("Тесты по компаниям", companies, mode)}
136148
`;
137149

138150
state.app.querySelectorAll("[data-mode]").forEach((button) => {
@@ -142,6 +154,7 @@
142154
mode_id: button.dataset.mode,
143155
});
144156
state.mode = normalizeMode(catalog, button.dataset.mode);
157+
syncModeToUrl(state.mode.id);
145158
renderCatalog(state);
146159
});
147160
});
@@ -160,7 +173,7 @@
160173
}
161174
}
162175

163-
function renderQuizGroup(title, quizzes) {
176+
function renderQuizGroup(title, quizzes, mode) {
164177
return `
165178
<section class="quiz-panel">
166179
<h3>${escapeHtml(title)}</h3>
@@ -173,7 +186,7 @@
173186
</div>
174187
<div class="quiz-card-footer">
175188
<span>${quiz.questionCount} вопросов</span>
176-
<button type="button" data-quiz="${quiz.id}">Начать</button>
189+
<button type="button" data-quiz="${quiz.id}">Начать ${quizQuestionCount(quiz, mode)}</button>
177190
</div>
178191
</article>
179192
`).join("")}

docs/index.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
title: "Java interview guides by JavaJub"
3-
description: "Бесплатные гайды и тесты JavaJub для подготовки к Java собеседованию: Java Core, Spring Boot, SQL, Kafka, JVM, System Design, live coding и реальные вопросы по компаниям."
3+
description: "Бесплатные гайды и тесты JavaJub для подготовки к Java собеседованию и Java вакансиям: Java Core, Spring Boot, SQL, Kafka, JVM, System Design, live coding и реальные вопросы по компаниям."
44
---
55

66
# Java interview guides by JavaJub
77

8-
Реальные вопросы для Java-собеседований по компаниям: Java Core, Spring Boot, SQL, Kafka, JVM, многопоточность, live-coding, code review и System Design. Проект помогает быстро понять, что именно повторять перед интервью в Сбер, Альфа-Банк, VK, Яндекс, Т1, МТС и другие команды.
8+
Реальные вопросы для Java-собеседований по компаниям: Java Core, Spring Boot, SQL, Kafka, JVM, многопоточность, live-coding, code review и System Design. Проект помогает быстро понять, что именно повторять перед интервью в Сбер, Альфа-Банк, VK, Яндекс, Т1, МТС и другие команды, а также как читать требования Java вакансий и готовиться под конкретный Java Job.
99

1010
[![Telegram](https://img.shields.io/badge/Telegram-JavaJub-FF3D00?logo=telegram&logoColor=white)](https://t.me/+vDYjUmPrBYZmMTAy)
1111
[![Site](https://img.shields.io/badge/Site-www.javajub.com-090E09?logo=github)](https://www.javajub.com/)
@@ -22,6 +22,7 @@ description: "Бесплатные гайды и тесты JavaJub для по
2222
| AQA Java | [маршрут AQA](roadmaps/java-aqa.md) · [МТС Банк AQA](guides/mts-bank-aqa.md) |
2323
| Банковский backend | [Сбер](guides/sber.md) · [Альфа-Банк](guides/alfa-bank.md) · [Т1 Иннотех](guides/t1-innotech.md) · [Лига](guides/liga.md) |
2424
| BigTech / алгоритмы | [VK](guides/vk.md) · [Яндекс Путешествия](guides/yandex-travel.md) |
25+
| Java Job / Java вакансии | [как разбирать Java вакансии](jobs.md) · [маршрут Middle](roadmaps/java-middle.md) · [тесты JavaJub](quizzes/index.md) |
2526
| Повторение по темам | [индекс тем](TOPICS.md) |
2627
| Самопроверка знаний | [тесты на GitHub Pages](quizzes/index.md) |
2728

@@ -68,7 +69,11 @@ description: "Бесплатные гайды и тесты JavaJub для по
6869

6970
Откройте гайд по нужной компании и идите сверху вниз. Подсказки под вопросами — это не учебник, а быстрый способ вспомнить ответ по ключевым словам. Если собеседование уже близко, сначала пройдите финальный чек-лист и задачи.
7071

71-
Это русскоязычная база для подготовки к Java собеседованию, но она также закрывает типовые поисковые темы: Java interview questions, Java Middle interview, Spring Boot interview questions, Kafka interview, SQL interview и live coding Java.
72+
Это русскоязычная база для подготовки к Java собеседованию, но она также закрывает типовые поисковые темы: Java interview questions, Java Middle interview, Spring Boot interview questions, Kafka interview, SQL interview, live coding Java, Java Job и Java вакансии.
73+
74+
## Java вакансии и Job Search
75+
76+
Если вы ищете Java Job или просматриваете Java вакансии, начните с [разбора требований вакансии](jobs.md): там показано, как переводить стек из описания вакансии в конкретный план подготовки. Например, `Spring Boot + PostgreSQL + Kafka` превращается в повторение DI, транзакций, индексов, consumer groups и delivery guarantees, а не в абстрактное “повторить Java”.
7277

7378
## Популярные запросы
7479

@@ -78,6 +83,7 @@ description: "Бесплатные гайды и тесты JavaJub для по
7883
- Kafka interview, consumer groups, offsets и delivery guarantees.
7984
- SQL interview, PostgreSQL, индексы, `JOIN`, `EXPLAIN`.
8085
- AQA Java interview, Rest Assured, JUnit 5 и WireMock.
86+
- Java Job, Java developer jobs и Java вакансии для backend-разработчиков.
8187

8288
## Как помочь
8389

docs/jobs.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: "Java вакансии и Java Job: как готовиться под требования"
3+
description: "Как разбирать Java вакансии и Java Job описания: стек, грейд, требования, вопросы на собеседовании, тесты JavaJub и план подготовки под Java developer jobs."
4+
---
5+
6+
# Java вакансии и Java Job: как готовиться под требования
7+
8+
Эта страница помогает не просто искать Java вакансии, а быстро понять, какие темы повторять под конкретный Java Job. JavaJub не является агрегатором вакансий: здесь собраны вопросы, тесты и маршруты подготовки, которые помогают пройти собеседование после того, как вы нашли интересную позицию.
9+
10+
Если в описании вакансии указаны Java Core, Spring Boot, SQL, Kafka, Docker, Kubernetes или микросервисы, используйте эту страницу как переводчик требований в план подготовки.
11+
12+
## Как читать Java вакансии
13+
14+
| В вакансии написано | Что обычно проверяют | Где повторить |
15+
|---|---|---|
16+
| Java Core, Collections, Stream API | `equals/hashCode`, `HashMap`, immutable collections, Stream pitfalls | [Темы Java Core](TOPICS.md) · [Java Core тест](quizzes/topics/java-core.md) |
17+
| Spring Boot, REST, AOP | IoC/DI, bean lifecycle, autoconfiguration, exception handling, AOP | [Spring тест](quizzes/topics/spring.md) · [Middle roadmap](roadmaps/java-middle.md) |
18+
| `@Transactional`, PostgreSQL, SQL | propagation, isolation, indexes, `JOIN`, `EXPLAIN`, N+1 | [SQL тест](quizzes/topics/sql.md) · [Hibernate тест](quizzes/topics/hibernate.md) |
19+
| Kafka, микросервисы | partitions, consumer groups, offsets, retries, idempotency, outbox | [Kafka тест](quizzes/topics/kafka.md) |
20+
| Docker, Kubernetes, CI/CD | image/container, Dockerfile, Deployment, Service, probes, pipeline | [DevOps тест](quizzes/topics/devops.md) |
21+
| Live coding, algorithms | строки, массивы, `HashMap`, two pointers, sliding window, code output | [Algorithms тест](quizzes/topics/algorithms.md) |
22+
| System Design | rate limiter, booking/taxi service, metrics, capacity estimate | [System Design тест](quizzes/topics/system-design.md) |
23+
24+
## Быстрый план под вакансию
25+
26+
1. Выпишите стек из вакансии: Java version, Spring, database, messaging, cloud/devops, testing.
27+
2. Отметьте грейд: Junior, Middle, Senior, AQA или Internship.
28+
3. Пройдите релевантный маршрут: [Junior](roadmaps/java-junior.md), [Middle](roadmaps/java-middle.md), [AQA](roadmaps/java-aqa.md).
29+
4. Откройте 1-2 похожих гайда по компаниям и сравните реальные вопросы с требованиями вакансии.
30+
5. Пройдите Express-тест на 15 вопросов по ключевой теме, затем Standard на 30 вопросов.
31+
32+
## Подборка под популярные Java Job запросы
33+
34+
| Запрос | Что открыть |
35+
|---|---|
36+
| Java Junior вакансии | [Junior roadmap](roadmaps/java-junior.md) · [ITK Academy](guides/itk-academy.md) · [SberSeasons](guides/sber-internship.md) |
37+
| Java Middle вакансии | [Middle roadmap](roadmaps/java-middle.md) · [Сбер](guides/sber.md) · [Альфа-Банк](guides/alfa-bank.md) |
38+
| Spring Boot Java Job | [Spring Boot тест](quizzes/topics/spring.md) · [Т1 Иннотех](guides/t1-innotech.md) |
39+
| Java backend вакансии в банках | [Сбер](guides/sber.md) · [Альфа-Банк](guides/alfa-bank.md) · [Лига](guides/liga.md) |
40+
| Java AQA вакансии | [AQA roadmap](roadmaps/java-aqa.md) · [МТС Банк AQA](guides/mts-bank-aqa.md) |
41+
42+
## Самопроверка перед откликом
43+
44+
Перед тем как откликаться на Java developer jobs, пройдите короткую проверку:
45+
46+
- [Все вопросы Java interview](quizzes/index.md?quiz=all-java-interview&mode=express)
47+
- [Java Core Express](quizzes/index.md?quiz=java-core&mode=express)
48+
- [Spring Boot Express](quizzes/index.md?quiz=spring&mode=express)
49+
- [SQL Express](quizzes/index.md?quiz=sql&mode=express)
50+
- [Kafka Express](quizzes/index.md?quiz=kafka&mode=express)
51+
52+
## Что спросить в канале
53+
54+
Если вакансия выглядит интересно, но непонятно, что именно повторять, принесите стек и грейд в Telegram-канал JavaJub. Новые вопросы и разборы собеседований выходят здесь: [получать свежие вопросы](https://t.me/+vDYjUmPrBYZmMTAy).

mkdocs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
site_name: JavaJub · Java interview guides
2-
site_description: "Реальные вопросы Java-собеседований по компаниям: Java Core, Spring Boot, SQL, Kafka, JVM, live coding и System Design."
2+
site_description: "Реальные вопросы Java-собеседований по компаниям, подготовка под Java вакансии и Java Job: Java Core, Spring Boot, SQL, Kafka, JVM, live coding и System Design."
33
site_url: https://www.javajub.com/
44
repo_url: https://github.com/JavaJub/java-interview
55
repo_name: JavaJub/java-interview
@@ -57,6 +57,7 @@ extra:
5757

5858
nav:
5959
- Старт: index.md
60+
- Java вакансии: jobs.md
6061
- Компании: companies.md
6162
- Темы: TOPICS.md
6263
- Тесты:

0 commit comments

Comments
 (0)