Highload fwdays — спікери зі Stackoverflow, Netflix, Google, AWS, Rovio | Київ, 5 жовтня
×Закрыть

Курс молодого джуна

Прочитав топик про собеседовании в ГЛ, решил написать выдержки из Торы на тему, как пройти собеседование джуну, может быть кому-то эта инфа будет полезной.

Итак, пройдёмся по пунктам:

0) Нужно выбрать направление в которое есть желание попасть. Не стоит отсылать резюме в одну и ту же кантору, к примеру, на джаву, С++, PHP и т.д. Это явно указывает на то, что вы не знаете ничего из указанного и мечетесь в поиске. HR вас забанит за флуд мигом.

1) Итак, направление выбрано. Далее, берём классическую книгу (Страуструп / Экель / ...) и начинаем читать. Читаем итеративно, тоесть если что то не понятно, то сидеть две недели над одной страницей не стоит, лучше потом вернуться. Не обязательно прочитать всё до конца, к примеру детально знать все тонкости stl у джуна требовать никто не будет.

2) Итак с книгой осилили. Не забываем делать практические задания (хотя бы некоторые), чтобы набить руку и выучить синтаксис цикла for.

Следующий шаг — ищем вопросы для собеседований. Открываем гугл и тайпаем «c++/java/php interview questions». Вопросов будет много, но они повторяются. Делаем из них каталог и изучаем :)

3) Не забываем о классике жанра. Читаем про поняти О большое, а так же про списки, деревья и массивы. Для джуна — самое оно. Вы должны иметь представления о сложности операций и четко знать как работает вставка, добавление etc. Так же не забываем про ООП. Базовые вещи спрашивают обязательно, так что практикуйтесь.

4) Задачи на логику. Если еще не читали Паундстоуна «Как сдвинуть гору Фудзи» — самое время начать. 90% задач на логику будут из неё.

5) Английский. Даже если вы его не знаете, как хотите но выучите рассказ про себя, своё хобби и работу своей мечты. Напишите на бумажке, дайте проверить грамотным людям. Базовая грамматика как бы тоже не навредит.

6) Итак, базу поднатаскали, надо приступать к атаке. Для начала неплохо провести учения. Выберете компании, в которых вы менее всего хотите работать, а точнее самые ужасные канторы с наихудшими отзывами. На них надо оттачивать мастерство. В нормальные канторы отправлять резюме следует после учений.

7) Хорошо если в фирме, на которую вы отправили резюме, есть ваш знакомый. Он может пойти и подёргать HR, рассказав что его друг не спит ночами, всё мечтает на работу устроиться. Бонусов за джуниора конечно не дадут, но пивом угостить его всё же стоит, ибо вы будете не просто джун, а джун с рекомендацией сотрудника.

8) Итак, вы пришли на собеседование. Большая просьба от Кацмана: если вы курите, сделайте так чтобы тот, кто вас собеседует этого не заметил. Если он курит, то ему всеравно, если нет, то это явно не плюс в вашу пользу. Лично меня напрягают разговоры с пачкой красных прилук.

9) Смотрите на оппонента как Муму на Герасима. Толкать умняки и понтоваться сейчас не время. Если не поняли вопрос — не тупите, а уточняйте, задавайте свои вопросы, попросите наводящий вопрос, подсказку. Возможные варианты ответов, если вы не знаете матчасть:

1. Я не знаю (+1 — честен)
2. Я не знаю, но думаю, что .. (+2 — честен и смел) Затем идет вопрос «А почему вы так думаете?» За ответ на него можно заработать еще плюсов. Или минусов, если внятного ответа не получим.
3. Я не знаю, но думаю, что ... потому что .. (+4 честен, смел, предугадал вопрос «почему», аргументировал ответ)
Самый главный совет всем джуниорам — стремитесь к последнему варианту. Произведете очень благоприятное впечатление.

LinkedIn

Лучшие комментарии пропустить

У меня есть несколько вопросов, точнее, один, но длинный:

Человек написал статью не для «отцов русской демократи», да? — Он ее написал для людей что хотят и пытаются как-то влезть в IT индустрию как разработчики, но почему-то каждый крайне умный «сеньор» считает за прямую обязанность бросить куском кала в автора, а в чем суть? — Самоутверждение? Вы умнее? Вы «круче»?

Whatever guys — напиши свой «опус» о том как человеку найти работу, будем ставить вам плюсики, а так же кадаться пирогами и другими подручными средствами в Вас. Уже тошнит от этого пафоса, который так и рвется из всех углов, вам самим не надоело? А?

Задолбали «бывалые», которые кидают говно на вентилятор, работайте лучше, ценить Вас будут больше, чем за попытки самоутверждения над другими, более юными товарищами...

Насчет последнего пункта не согласен. Многие джуны воспринимают собеседование как экзамен в универе. Т.е. если чего-то не знаешь, надо уходить от ответа, молоть чепуху и тыкать пальцем в небо — авось попаду. На собеседовании таких видно сразу и впечатление они производят очень неприятное. Думаешь: ага, милый, а потом я дам тебе задачу, спрошу, как дела продвигаются, а ты мне лапшу будешь вешать, что, мол, все почти готово, только еще чуть-чуть. А потом из-за них придется нервы трепать. Нафиг-нафиг!

Мы не в угадайку играем на собеседовании. Мы проверяем, может ли человек хоть чуть-чуть мозгами шурупать. Самый лучший ответ, который джун может дать, это «я точно не знаю, но думаю, что так-то и так-то, потому что ...» Причем, тут есть три уровня, и за каждый отдельный плюс в карму, примерно так:

1. Я не знаю (+1 — честен)
2. Я не знаю, но думаю, что .. (+2 — честен и смел) Затем идет вопрос «А почему вы так думаете?» За ответ на него можно заработать еще плюсов. Или минусов, если внятного ответа не получим.

3. Я не знаю, но думаю, что ... потому что .. (+4 честен, смел, предугадал вопрос «почему», аргументировал ответ)

Самый главный совет всем джуниорам — стремитесь к последнему варианту. Произведете очень благиприятное впечатление.

Еще из классики жанра забыли вспомнить про ООП — любят у джуниоров это спрашивать. Кстати, отвечают по теме ООП все поголовно очень и очень слабо. Тут не заучивать надо, а еще немножко попрактиковаться.

Надеюсь парочка джунов вспомнит добрым словом ребе Кацмана.

Путь ребе Кацмана очень длинный и сложный, такое чувство шо он не ребе Кацман, а какой-то китайский философ КацЦин. Есть вариант проще:
1) Программисту не надо знать шо все надо начинать с 0 :)
2) Читаем половину книги по джаве/дотНету/ПеХоПе
3) Заваливаем собеседование в «лидере рынка» (Завалить можно потому что даже половину книги не осилили или просто вести себ так шоб контора поняла где ее место)

4) Создаем тему на ДОУ шо в конторе А подают кофе в не красивых чашках.

Курс молодого сеньора (не сдержался):

На собеседовании сидишь с видом, что вот ещё немного процедуры, и можно будет перейти к пиву. При рассказе лида о том что там у них в проекте — всем видом выражаешь удивление тем что они смогли тебя заинтересовать. Потом пишешь на бумажке, как обычно, реверс строки на Си. Профит. :)

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Пока занимаюсь английским языком, встретился следующий текст. От china232.com

Английский на уровне новичка.

<b>How to prepare for a Job Interview</b>

Preparing for a job interview is really important and can make the difference between getting
the job and not getting it. Here is a list of things that you should do before you go to any job
interview.
1. Research the company on line.
Go to the company website and look around. Try to find out as much as you can about the
company and be prepared to talk about it during the interview. It’s good to know things like
the company’s stock price, the future plans and goals of the company, as well as any major
news that has to do with the company. It’s a good idea to learn things about the company
that are interesting to investors.
2. Prepare some quality answers to common questions that employers often ask.
Don’t memorize answers or you will sound like a computer, but it’s smart to have a good idea
of how you respond to the most common interview questions.
I’ve written a separate article about answering common interview questions here.
3. Make a list of intelligent questions that you want to ask the employer.
After you have answered the questions from your employer you will have an opportunity to
ask some questions. You should take advantage of this by asking intelligent questions to
show that you are interested in the position and are an intelligent person.
Some good questions to ask:
What kind of career growth opportunities will I have here?
What kind of training does the company provide?
These two questions really show that you are interested in learning more and becoming a
major part of the company. Employers want motivated people.
**Remember, some of these answers might be found on the company website. If you can
find answers to them then a better question would be something like:
“I noticed on the website the company provides computer training. Could you tell me a little
more about that please?”
That question would really show that you already took the time to learn about the company
and you are interested in learning.
What questions should you NOT ask?
Don’t ask about money, vacation time, or anything else that would benefit you only and not
the company. You must understand that at this job interview, you are trying to impress the
employer. You haven’t been hired yet so there is no reason to be asking about how much
money or vacation you will be getting. If the employer calls you back after the interview and
decides to hire you, then that is the time to negotiate these details. **Sometimes they will
ask you questions about salary during the interview. I’ll explain how to answer those
questions in another article.
4. Get a haircut and make sure your clothes are really clean and ironed.
It is simply ridiculous to go to an interview not looking your best. In the business world,
image counts a lot. People do notice if your clothes are ironed well, if they are really clean, if
your shoes are shined and things like that. A good appearance makes people think that you
pay attention to detail and put a lot of effort into what you do. That is what employers want.
Take a look at this article on “how to dress for a job interview” for more details.
5. Know the location of the job interview in advance and figure out how long it takes to get
there.
Make sure you get to the job interview 15 to 20 minutes early. Being late for an interview is

really bad. NO EXCUSES!

<b>How to behave properly during a job interview.</b>

I admit that this topic seems pretty funny and most of you are probably thinking that you
know how to behave quite well. It’s still a good idea to read through this list to make sure
that you don’t make any mistakes.
Don’t chew gum
-It looks very unprofessional to be chewing gum. I’ve you are worried about having bad
breath, suck on some strong mints before you go in. Also, don’t take any food into the
interview, even if you aren’t planning on eating it there.
Don’t smoke
-This should be obvious that you wouldn’t smoke during a job interview. If you do smoke,
make sure that you don’t smell like it when you go inside.
Turn your cell phone off
-Definitely don’t ever answer your phone during a job interview. Your phone should also be
turned off so you don’t hear an embarrassing and distracting ring during the interview. You
also should not pick up your phone either to look for messages or send them.
Give a firm handshake
-It’s important to be able to give a proper handshake. When you shake someone’s hand,
make sure it is firm, but do not try to crush the other person’s hand. Make sure you look the
other person in the eye and smile while shaking hands.
Sit and walk with good posture
-It’s important that you sit up straight and stand straight while walking. Move at a fairly quick
pace as well. Employers don’t want to see anyone who looks tired and slow.
Smile
-It’s a fact that smiling makes other people happy and comfortable around you.
Make eye contact with the employer
-When you are talking, make sure to look the employer in the eyes. It makes you look more
confident. Also, when you look someone in the eyes while speaking it makes you look like
you are telling the truth.
Don’t interrupt
-Even if the employer is talking too much, let them finish and don’t try to interrupt them.
Simply wait for them to finish and then you will have a chance to say something.
Don’t fidget
-Don’t play around with your hands or papers or anything. It will make you look nervous.
Just try to sit still with good posture and smile.
Don’t look around the room
-If you are looking around the room and not at the employer, you will seem like you are
bored or you are not paying attention. Do you think someone would want to hire you if it
seems like your mind is always on other things and can’t listen?
Don’t wear too much make-up
-For a female, wearing make-up is ok but do it in good taste. Don’t wear too much.
Don’t wear too much jewelry
-For women, watch, ring, and earrings are ok. For men, watch and ring is ok.
Cover up any tattoos if you have them
-If you have any tattoos it’s a good idea to cover them up.
Make sure you are very well groomed
-Obviously you want to look clean, but make sure your hair looks good, you’ve cut your
fingernails well, and paid extra attention to your grooming. Being neat and groomed is
important for the company image. Even if you were very smart and good at what you do,

companies don’t want people who are going to embarrass them by not looking their best.

<b>How to answer questions during a job interview</b>

When you are answering questions during a job interview, it is very important to remember a
few key ideas. You don’t always know exactly what the questions will be, but there are some
things you should keep in mind for any questions that might come up.
Always try to answer the questions in a way that make you look like a good fit for the
job.
Remember that you are trying to get the job. Don’t lie about anything but make sure you
choose your answers wisely. Think about what kinds of answers are true for you and also
make you look capable for this job.
It’s ok to take a moment to think before
your answer
If you take a moment to collect your thoughts it shows that you are really trying to answer
well. Don’t take too much time of course but a little time is fine. Also, make sure you answer
questions. Don’t say something like, I don’t know, I’ve never thought of that before and
leave it at that. You need to come up with some kind of answer for everything.
Answer clearly and concisely. Don’t ramble on with long answers.
Make sure you answer clearly in sentences. Don’t just say yes or no. Don’t talk for too long
either. If you keep talking, it shows that you are not very good at expressing yourself and it
also shows that you are not very respectful of the interviewers time.
Make sure you are answering the right question.
It’s ok to ask for clarification of a question if you don’t understand. It shows you are careful.
It’s better to ask a second time what the interviewer asked than it is to answer a totally
different question.
Don’t talk about personal problems during an interview
This is not the time to talk about your personal problems. The interviewer will not feel sorry
for you and give you the job because you have a hard life. They want someone who can do
the job.
Don’t talk about salary or holidays during an interview
The interview is not the time to be negotiating salary or talking about holidays. It is your job
to show the interviewer what you can do for the company. If you get offered a job, you can
talk about what the company can do for you.
Never say anything bad about anyone, especially previous employers and coworkers
It looks horrible to say bad things about other people during a job interview. Its extremely
unprofessional.
Don’t say anything very controversial
The last thing you would want to do is to say something offensive, or some strong opinion
that many people disagree with. You might have the interviewer judge you very harshly if he
or she happens to disagree with your view. Its safer not to talk about your personal views
too much.

<b>Typical job interview questions and answers</b>

· Tell me about yourself (try to hold your response to 2 minutes)
This is often the first thing an employer will say to you. It’s an opportunity to give a brief
summary of what you’ve been doing recently, what your interests are, and what type of
person you are. You should keep your response under 2 minutes. You can choose how you
want to answer this question so make sure you choose wisely and talk about your good
qualities that would be good for the job. It’s good to mention your interests and your goals.
You should always be trying to answer in a way that somehow would make you look good for
the job. For example, if you love to exercise, mention that because a healthy person should
be a better worker. If you love to go to the bar, say you like meeting new people, don’t say
you like to drink. Always answer with the positive side of things. Talk about how you love to
learn and improve yourself, make it seem like you are interested in many things. Don’t say
you like coming home after work and watching TV for hours, even if you do like it. I admit, I
like it sometimes.
· Why should we hire you?
This is another common question that you need to be prepared for. It might be slightly
different like, “Why do you think you would be a good employee here?”, or “Why do you think
you would be good at this job?” These questions are essentially the same. When you
answer this question you want to tell them what your strengths are and how they relate to the
job. Think about this question before you go to the interview. This is your chance to show
why you can do this job well. If you are going to be a sales person, think of some good
characteristics that you have that relate to being a salesperson. You can show your selling
capabilities even if you have no sales experience. Are you outgoing? Do you like meeting
new people? Are you very persuasive? Then, if you say you like meeting new people for
example, think of a real life example that shows this. Maybe you joined a local chamber of
commerce recently. You also want to mention some of your accomplishments in past jobs
in past jobs or other areas of life. If you can, try to use real numbers. It’s better to say
something like, “In my last sales job, I exceeded my targets by over 30% every time and I
was the highest in sales for 3 different months” than to say something like, “In my last sales
job, I was able to sell a lot of stuff and people always told me they thought I was good at it”.
Specific is much better.
· Why do you want this job?
Interviewers love to ask this question because they want to see if you truly are interested in
accepting the job. Many people go to job interviews knowing that even if they are offered the
job, they won’t take it. They are also hoping to see that the job position challenges you and
interests you. Talk about your motivation and what excites you to perform really well.
People who like what they do work harder. Don’t say something like, “it’s an easy job and
I’m lazy”. Or, “the money is really good and I want to buy a house”. Tell them what interests
you about the actual job.
· Why did you leave your last job?
An interviewer would like to know this because they are hoping to find someone who would
only leave for a good reason. They don’t want to hire someone who might quit really soon.
A good answer to this question would be something like, “Well, it was a really tough decision
for me to leave my last job, but I realized that it was no longer challenging me and there was
no room in that company to move up. I really enjoy challenges and improving myself and
that job didn’t offer me that anymore”. Never say something bad about your previous boss
or other co-workers. Don’t say anything bad about the company either.
·Where do you see yourself in 5 years?
This question gives the interviewer to get a feel for what goals you have for yourself. They
want to know how motivated you are to improve in the company. They also want to see if
you see yourself staying with that company.
· What accomplishment are you most proud of?
Think of some achievement that demonstrates a skill you have relating to the job. You can
choose any achievement here. The important thing is that you are able to show how the
achievement will make you a good candidate for the job. If you are most proud that you did
well in school and got into a top university, be able to explain how that is useful. For
example, you might say something like you set a goal to get into a certain university, you
made a detailed plan for how you were going to achieve that goal and finally you achieved
it. It was the first time in your life you realized that you could do anything you set your mind
to and you’ve been setting goals and achieving them in many areas of your life ever since.
· Can you work well under deadlines or pressure?
You must somehow show that you will be able to work in all situations. It’s good to say that
you work well under pressure. If you really don’t, then you might say something like you
don’t perform your best under pressure, that’s why you are extremely organized and get all
your work done much sooner than it is needed.
· Would you be willing to take some additional courses to advance your career?
If they ask you this question they are certainly hoping that you will say yes. If you say no,
you’d better come up with some good reason why not. I can’t think of a good one though.
· What are your career goals?
Here you should talk about your future with the company and how you plan on always
improving. Even if you want to stay in the same position forever, explain how you will keep
improving at it.
· What are your strong points?
This is where you need to talk about what you are good at. Again, you need to pick things
that you will be able to show how they relate to the new job.
· What are your weak points?
You need to be prepared for this question. You must answer it. Everyone has
weaknesses. The key here is to pick weaknesses that can also be seen as strengths. Also,
be able to explain what you are doing to overcome your weaknesses. It would be good to
say that you are sometimes too stressed because you put too much pressure on yourself to
succeed. You have been trying to relax more by taking yoga classes. That weakness looks
ok because it shows that you like to work hard. Don’t say, my weakness is being lazy.
· Are you willing to travel or relocate?
You should think about this question before you go in. Obviously they are hoping you say
yes if they ask it, but don’t lie. You could ask how much would be required, or explain that

you have a family and would prefer not to travel too much. Don’t simply say no though.

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

Это уже дилетантство HRов, раз они ничего не видят и не понимают. (ИМХО)

Спасибо, ценная инфа

Хорошо, всё по делу. Сначала хотел написать, что не помешает конкретика в пунктах 2, 3. Оказалось всё есть в коментах. )

Кацман, отлично написали, шикарное руководство для джунов, да и другие параллели вполне можно провести!

Ребята, прочитал в Эккеле главу «Система ввода/вывода», запомнил мало... понял немного. Слишком много классов, декорирование. Не понятно что/куда/зачем/почём.
Скажите, стоит ли заострять внимание на этой теме?

Собираюсь прочитать ещё Хорстманна 8-издание, завтра приедет :)

стоит ли заострять внимание на этой теме?

Это уже смотря куда ввод, и откуда вывод :p

Это некорректный вопрос. Зависит от того, с чем вам придётся работать.

PS: В своё время пропустил в Шилдте главу по многопоточности. Закон бутерброда сработал идеально.

В веб-дотнет я потоки ввода-вывода использую регулярно. Про Джаву — я хз, но это, в общем, родственные технологии

Эккеля лучше не читать без подготовки..книга — взгляд автора на данный язык . это не учебник по изучению, это — «Философия джава»...

Сложность в декораторах и иерархии классах. Файл открыть можно разными способами, читать из файла можно тоже разными способами. Буферизированные классы и т.д. Каждый класс находится обёрнутым в другой класс.
Сегодня начну читать последнюю главу Multithread и буду приступать к чтению Хорстманна. В марте появится ограниченным и тиражом Java 7 полное руководство.
www.williamspublishing.com/...459-1759-1.html
хочу взять её тоже для закрепления. :)
Вообще, согласен. Эккеля сложно читать и примеры программ у него слишком абстрактные.

Для закрепления лучше несколько практических заданий...Java.Промышленное програмирование....http://book.epam.by... — в самый раз будет.

Да, эту книгу видел, но она только в эл. варианте. В бумажном не могу найти
Кстати, появилась книга O’Reilly Изучаем Java, правда издательство Эксмо

www.books.ru/...1806759/?show=1

Читали бы лучше Шилдта... Для новичка ничего лучше нет, ИМХО.

По Шильду вечно какие-то споры идут. :))) Одни кричат — отлично! Другие — шлак.

В общем, впереди Хорстманн, а там посмотрим.

Шилдт — это C/C++/C#/Java для домохозяек, как выражалась моя университетская преподша по ООП. То есть, всё предельно разжёванно. По мне, так лучшей первой книги вы не найдёте. Особенно, если с более сложными книгами у вас проблемы.

Лично мне Г. Шилдт не понравился, по С++ посмотрел словами не описать, если б не Роберт Лафоре и Дейтлы ну точно в ООП и С++ не разобрался, а вот по C# тоже начал читать его книгу, не очень понравилась (только начал изучать и 1 часть закончил, бросать смысла нету, нужно дочитать), да все написано хорошо, прекрасно, на лету можно с 1-го раза ловить, но мало примеров + жалко было хоть 1 страничку в 1 разделе из 5-8 заданий для личной практики сделать. Надеюсь с Троельсоном или Рихтером больше повезет. А вот Java уже сомнения грызут, может через 1.5 года присмотрюсь, но как-то не очень хочется.

Проблем с пониманием нет. Я начал изучать серьёзно Java(у) совсем недавно. Слишком требователен к себе. Не даю времени себе, чтобы переварилась информация, устаканилась. Хочу всё сразу и сейчас! :))

Недавно смотрел проект, который делали ребята на курсах во львовском <epam>. Я получил шок!
Пока я был погруженным и не спеша читал книгу Философия Java, разбирался с основами ООП, курсанты за два месяца бегло пробежались по всем темам, и командой из пяти человек написали веб-проект морского боя, где применяли: Core Java, Maven, JSP, Servlets, SVN, JDBC
И вот, я прочитал книгу, думал — Ха! Фигня какая-то, наверное, открываю их немаленький размером проект, смотрю — я офигеваю! КАК?!
Пацаны — ваще ребята! Зашибись, чотко!

Если читаете — молодцом! :))

Оценили проект сами экзаменаторы в <epam>. Хвалили за спиной ребят. :))

Правда, мне с трудом верится, что люди пришедшие на курс ничего не знали по Java до этого. :)

личный опыт показывает, что кидание за борт, с периодическими ударами веслом по голове, лучший и самый эффективный способ быстро научиться плавать (ну или осознать, что плавание — это не твое).

Не даю времени себе, чтобы переварилась информация, устаканилась. Хочу всё сразу и сейчас! :))

Ну, ты же взрослый мальчик, а хочешь все, сразу и сейчас. В 27 или там 29 лет способность к обучению далеко уже не та, что в 12 или 17. Если в книжке есть задачки, выполнять их сейчас даже важнее для понимания, чем тогда.

Троелсен и Рихтер про разные вещи написали книги. Троелсен по C# великолепный труд издал, а Рихтер про CLR.

Если выполнить все пункты и подделать CV то вполне можно устроится и сениором. И не факт что позже разоблачат.

Очередная жесть:
s018.radikal.ru/...1841b303560.png
Питер рулит. Найдите безымянный класс. У меня книга 2011 года издания. Электронная версия 2009.

Никакой разницы.

Там вся книга в жесте. :))
Программа не соответствует описанию.

Хорошая статья. По многим пунктам подходит не только для программеров, кстати.

Коллега, я восхищен вами! Прекрасное повествование!

Джунам брать на вооружение.

Замечания:
П. 1: Мало просто читать книгу, надо после каждого раздела ставить пальцы на клавиатуру и проверять на практике усвоенное, хоть бы в самом минимальном объёме. Иначе а) не будет уверенности в себе б) к концу книги её начало выветрится из головы в) теоретик от практика заметно отличается, даже стилем мышления. П.2 как то отделяет процесс практики и упражнений в отдельный пункт программы, ИМХО это не корректно.
П. 2+: Если нацелились на C++ набираем в гугле «C++ pitfalls», Java — «Java pitfalls», и узнаём список самых заковык языка, понимание которых и полезно для саморазвития, и растопит лёд в сердце любого интервьюера.
П. 5: Главное в английском — быстро смело и уверенно выражать свои мысли, даже если вы и путаете «падежи» порой. Мычаще-заикающийся английский — наоборот, произведёт явно негативное впечатление.

П. 8: Жевательная резинка (до собеседования) поможет нейтрализовать не только табак, но и неприятный запах изо рта. Дезодорант же, напротив, может вызвать у собеседующего удушье. Ну и помыться-побриться не помешает, вонючий джун — плохой джун.

Кстати насчет вашего П. 2+ можно спорить.
Питфолы следует изучать уже когда тверда основа.

Да и не должны их требовать для джуна. Даж на синьйор позици (речь о джава) достаточно редко про них (почемуто) спрашивают.

Можно. Питфолы как правило проливают свет на самые тёмные углы, куда народ не любит и не советует заглядывать. Однако, задачи на знание языка, если таковые будут заданы, хоть как-то но затрагивают эти «адванснутые фичи». И для собстевенной оценки понимания предмета они так же очень важны — быстро выяснить свои слабые места. При этом списки питфолов довольно лаконичное а значит эффективное чтение, поэтому я их рекомендую.

вонючий джун — плохой джун

LOL

Насчет последнего пункта не согласен. Многие джуны воспринимают собеседование как экзамен в универе. Т.е. если чего-то не знаешь, надо уходить от ответа, молоть чепуху и тыкать пальцем в небо — авось попаду. На собеседовании таких видно сразу и впечатление они производят очень неприятное. Думаешь: ага, милый, а потом я дам тебе задачу, спрошу, как дела продвигаются, а ты мне лапшу будешь вешать, что, мол, все почти готово, только еще чуть-чуть. А потом из-за них придется нервы трепать. Нафиг-нафиг!

Мы не в угадайку играем на собеседовании. Мы проверяем, может ли человек хоть чуть-чуть мозгами шурупать. Самый лучший ответ, который джун может дать, это «я точно не знаю, но думаю, что так-то и так-то, потому что ...» Причем, тут есть три уровня, и за каждый отдельный плюс в карму, примерно так:

1. Я не знаю (+1 — честен)
2. Я не знаю, но думаю, что .. (+2 — честен и смел) Затем идет вопрос «А почему вы так думаете?» За ответ на него можно заработать еще плюсов. Или минусов, если внятного ответа не получим.

3. Я не знаю, но думаю, что ... потому что .. (+4 честен, смел, предугадал вопрос «почему», аргументировал ответ)

Самый главный совет всем джуниорам — стремитесь к последнему варианту. Произведете очень благиприятное впечатление.

Еще из классики жанра забыли вспомнить про ООП — любят у джуниоров это спрашивать. Кстати, отвечают по теме ООП все поголовно очень и очень слабо. Тут не заучивать надо, а еще немножко попрактиковаться.

Кстати, забыл написать, что в целом очень хорошая статья, автор — молодец.

Спасибо, замечания по теме, исправил.

А что в ооп такого сложного могут спросить? Приведите хоть 1 сложный вопрос. Разве что по принципам OOD, зависимостям, вопросы не очевидные и не все про это слышали.

есть, например, очень и очень неочевидные вещи связанные с наследованием и перегрузкой методов. вот один из примеров
habrahabr.ru/...ogs/java/57834

мне лично на собеседовании попался вот такой квест

class A {
A(){ print(); }
void print(){
system.out.println("A");
}
}
class B extends A {
B(){ print(); }
void print(){
system.out.println("B");
}
}
class TestAB{
public static void main(String[] args){
A a = new B();
}
}
я ответил неправильно. дома запустил, посмотрел результат, произнес WTF! (как, вероятно, и многие другие до меня), потом просто принял к сведению. самое интересное, что аналогичная программа на C выдала другой результат, и какбы получается, что у сишников и джавистов разная имплементация такого основополагающего ООП понятия как наследование? ))).
Сначала инициализируются статические поля базового класса, Затем если есть статические поля в подклассе, инициализируются они.
При создании экземляра класса наследника инициализация начинается с обычных полей базового класса, затем вызывается коструктор базового класса, после чего инициализируются обычные поля подкласса и только после этого происходит вызов конструктора подкласса;.
Хотя, последовательность инициализации не такая. :) Я думаю, она заморочена сильнее. По-идеи, после инициализации статических переменных, обычные поля базового, а затем класса потомка должны получать значения по умолчанию. Потом произойдёт вызов конструктора базового класса, и после него проинициализируеются переменные в базовом классе. И всё тоже самое должно произойти только с классом потомком. :)

Сам хотел бы узнать как правильно происходит инициализация при наследовании.

Не рекомендуется при наследовании переопределённый метод вызывать в конструкторе базового класса. Иначе, получится то, что получилось у Вас.

Таких вопросов тонна и все они на внимательность. Вот, вопрос, похож на Ваш, тоже с переопределённым методом в конструкторе базового класса
i28.fastpic.ru/...dfd3e590275.png
несмотря на то, что создаётся объект B, нужно помнить про последовательность инициализации, которая начнётся с конструктора базового класса, который вызовет переопределённый метод show() объекта B, а там, переменная была проинициализирована со значением по умолчанию. Поэтому результат будет ноль. :))))
Всё таки, почаще нужно проходить тесты www.quizful.net/...-java-developer

чтобы освежать память. И книги перечитывать пару раз в год. :)

Интересная ситуация. Я немножко ее развил, чтобы вызов переопределенного метода и вовсе приводил к ошибке:

class Parent {
    
    Integer numParent = 2;
            
    Parent(){msg();}
    
    void msg(){
        System.out.println(numParent.toString());
    }
}

class Child extends Parent {
    
    Integer numChild = 3;
    
    Child(){msg();}
    
    /* На момент вызова этого метода из конструктора
     * родительского класса Parent переменная numChild 
     * еще не инициализирована объектом типа Integer 
     * и содержит null. Попытка вызова метода toString() 
     * из этой переменной приведет к ошибке */
    @Override
    void msg(){System.out.println(numChild.toString());}
}

public class Test {
    
    public static void main(String[] args) {
        Parent p = new Child();
    }    
}

походу незакрытый тег внес свою изюминку в форматирование той части ветки, что ниже ))

У меня форматирование вроде отображает корректно. Может особенности браузера.

Мда, вот что значит лень матушка... никак не могут поправить теги и скобки.

В Джаве вызывать не final методы в конструкторе — плохая практика, ведущая к такого рода граблям.

вопрос, скорее и вероятно, не в плохих или хороших практиках, ибо код на тестах в большинстве своем пишется именно плохо и неочевидно, чтобы обратить наше внимание на особенности даже не языка, а компилятора. последний нередко что-то добавляет от себя или выбирает не то поведение, которое нам кажется более логичным.

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

Так это language specific вопросы, а я спрашивал именно по ООП.

Если человек Java программист, какие будут задавать ему вопросы? Это и есть вопросы по ООП — инкапсуляция, полиморфизм, инициализация.

Есть хорошая статья, мне нравится, для совсем зелёных. :)))

cloud-cuckoo.com.ua/node/11

См верхний пост, там Андрей говорит что могут по теме ООП многие отвечают слабо, ООП его теория, принципы это != особенностям имплементации в каждом конкретном языке, ведь инкапсуляция в симулаподобных языках, smalltalk и, например, при использовании агентов сильно отличается, но суть-то одна . К тому же вопросы по ООП могут включать себя не только стандартную триаду, но и паттерны и принципы проектирования, рефакторинг .

Давайте пристанем к нему с вопросом?

Не во всех языках ООП подрузумевает инкапсуляцию, наследование или полиморфизм. Ознакомьтесь кратенько с моделью ООП хотя бы в ДжаваСкрипте.

Сишников такое горе основополагающее понятие, как наследование, обошло стороной. Как и все остальное ооп.

ООП головного мозга поражает человека вообще :)

а не пишущего на отдельном взятом языке. Поциэнт с выраженным ООПгм и на ассемблере будет пытаться делать всё через ООП. У здорового человека ООП в комментариях.

Андрей? Напишите, пожалуйста, какие вопросы задают Junior(ам) по ООП?

Хочу быть готовым! :D

Я не Андрей, но для старта я бы спросил по джаве чем абстрактый класс отличается от интерфейса.

Слишком лёгкий вопрос. :)
Интерфейс это наивысшая степень абстракции, которая помогает реализовать подобие множественного наследования. Реализуя интерфейс, класс подписывается полностью под его манифестом и обязан реализовать в себе все его методы. Все методы интерфейсы не имеют тела.
Также как и абстрактный класс, интерфейс предназначен, чтобы запретить программисту-клиенту создавать объекты.
Интерфейсы дают возможность выполнять восходящее преобразование к нескольким базовым типам.
Ну, и, по мелочам, когда класс реализовывает интерфейс, все методы должны быть объявлены с модификаторами public. Класс который объявляется в интерфейсе автоматически имеет модификаторы public static, т.е. является вложенным.
Интерфейс может содержать переменные, которые объявляются автоматически с модификаторами public static final.
По абстрактным классам — базовый класс, который запрещает создание объекта, может иметь и не иметь в себе абстрактные методы (методы без тела, как и в случае с интерфесами). Всем остальным он ничем не отличается от других классов. :)

Все классы, которые унаследованы от абстрактного класса обязаны переопределить абстрактный метод.

Только, ведь, этот вопрос по Java, а не про ООП? :)

Слишком лёгкий вопрос. :)...

Ну зачет по Джава вам поставить можно, хотя и с оговорками ... в общем трояк, если ответите на доп вопросы 4. Ибо студент овладел материалом, но не способен выделять важное.:)

Только, ведь, этот вопрос по Java, а не про ООП? :)

Так лучше:

по джаве чем абстрактый класс отличается от интерфейса

Ответ дается одним предложением.

Я не претендую пока на Junior. :)

Хотя бы Trainee, абы взяли. :)

Я не претендую пока на Junior

Не хочу вс оскорбить, но

способен выделять важное

Это основное, что может предложить джуниор (тем более трейни). И нормальные работодатели проверяют, у джуниоров, в основном это; то есть знания конкретной платформы — вторичны.

Вам не кажется, что эту важность Вы определили сами для себя? :))

Что Вы хотели от меня услышать? Я послушаю знатока.

Не знаток, но мне кажется это предложение может выглядеть примерно следующим образом: абстрактный класс может содержать реализацию, а интерфейс — нет.

Не?

Да.
Придраться к словам можно всегда. Лично мне больше нравится:

Интрефейс описывает что должна/может делать реализация при этом не содержит ее, а абстрактный класс содержит реализацию общего поведения, предоставляя конкретику потомкам.

Вы написали вывод из моих слов? В чём разница?

Будьте доброжелательнее.

Вы написали вывод из моих слов?

В общем да.

В чём разница?

Ответ

Интерфейс это наивысшая степень абстракции

Выдает или спеца в теории программирования и ООП (мало кто поверит что джун таким являетсо) или человека который «тупо зазубрил» (уже негативное отношение)

которая помогает реализовать подобие множественного наследования

Сново шаблон из книги, который говорит что тот кто это произнес не читал (не вчитывался) литературу по ООП, а тока главу «ООП в джава». Сюда же описания применений (про клиентскую программу).

Много воды про модификаторы. Именно воды, если человека будут интересовать особенности он это спросит.

Будьте доброжелательнее.

Люди вообще сволочи! А те кто доброжелательны лживые сволочи :) Научитесь получать полезную информацию (знания) из любого материала.

Спасибо, но лучше, я буду получать знания из книг. :)

Книги это ок, не спорю.
У меня, например, половина команды часто проводит собеседования, от джунов до синьоров и тех. лидов. Так вот ни разу не было такого, чтобы кто-либо начал на вопрос о разнице между интерфейсом и абстрактным классом рассказывать нечто подобное тому, что вы написали.
Случилось такое, то это оставило бы отпечаток на всё последующее общение, так как, во-первых, как уже писали выше, человека приняли бы за теоретика, вызубрившего главу про ооп перед собеседованием.
А во-вторых, от него бы ожидали подобного уровня знаний на все остальные вопросы. Естественно, никто выдать наизусть книгу не сможет, и этим только ухудшит мнение о собеседуемом.

Каждый, кому задавали этот вопрос, отвечал одним предложением. И подробности его спрашивали уже после ответа.

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

Есть темы в которых я разбираюсь слабо (RTTI, ограничения в параметризации, метасимволы) и я не скрываю этого. Мне сложно даже сформулировать мысли, потому что я не прочувствовал ещё и мало, что вынес для себя из этих тем.

Ну, а личная неприязнь ко мне некоторых на этом форуме мне абсолютно безразлична. Я уже давным давно понял.
Расскажите мне про то, какое я существо и кого мне надо слушать. Выражайте свои мысли мне лично, при встрече!
Представьте себе. :)) Ваши слова и, слова других некоторых пользователей меня абсолютно не переубедили.

Буду читать, буду разбираться, буду зубрить.

Я не против тёплого общения, но с такими советами и с ехидничеством — всем в лес! :)) Я таких людей на дух не переношу. :D

Эммм...
Да мне, в принципе, все равно, кто вы. Всего лишь очередной анонимус на форуме, не более.
И где вы увидели неприязнь? Я только пытался давать советы. Не нужны? Да не вопрос.

Ехидничество некоторых основано на вашей излишней уверенности в некоторых вопросах. За примером далеко ходить не надо:

т.к. мои знания свежее Ваших, я помню про детали

Я не пытаюсь доказать обратного, меня лишь удивляет то, насколько вы уверены в своих словах.

Я не говорю конкретно про Вас. :)
Мне не понятна эта демагогия, когда мои мысли не соответствует чьему-то шаблону. Я отвечал на вопрос определённому человеку.

Получается так, что есть шаблон ответа — остальные неправильные.

Почему мне не быть уверенным в том, в чём я разобрался неделю назад?

Простите, если я начну задавать на форуме вопросы — почему? Все эти ехидные эпические существа попрячутся, потому что не будет интереса что-либо объяснить. Зато когда нужно поумничать, они, тут как тут, со своим багажом комплексов. Видимо таких обижали в школе много, теперь, отрываются.

Ну при чём тут шаблон? Ваш ответ звучал примерно так:

Пасатижи — многофункциональный ручной слесарно-монтажный инструмент, в котором обычно совмещены плоскогубцы, бокорезы и 2 резака для рубки проволоки разного диаметра. Ими можно забивать гвозди.

По большому счёту, что такое интерфейс и асбтрактный класс, и зачем они нужны, вас не спрашивали, но если уж решили расказать, так делайте это правильно.

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

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

В чём разница с абстрактным классом? :))

Он также может оперировать с объектами, которые являются потомками. Абстрактный метод тоже описывает возможности, но не содержит реализацию.

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

В чём разница с абстрактным классом? :))

Еще упустили то, что члены интерфейса могут иметь только публичный модификатор доступа, чего не скажешь об абстрактном классе. Интерфейсы используются там, где нужно соблюдение контракта. Абстрактные классы использются ради полиморфизма, и наследования реализации. ИМХО :)

Интерфейсы тоже поддерживают полиморфизм. :)

И ещё абстрактный класс не содержит конструктора.

Интерфейсы тоже поддерживают полиморфизм.

Чего чего?

А вы что не знали что полиморфизм — это когда разные параметры у метода?

полиморфизм — это когда разные параметры у метода

Стоп — это ведь перегрузка, или не так? Полиморфизм делается за счет изменения реализации метода.

И ещё абстрактный класс не содержит конструктора

Странно, у меня — сбилдилось:

abstract class Class1 { public Class1() { } }

это ведь перегрузка, или не так?

Это был сарказм. :)

Хотя, кажись, формально перегрузка является полиморфизмом, но если смотреть на методы как на объекты ... или что-то в этом роде ... к сожалению уже не помню.

И ещё абстрактный класс не содержит конструктора

Наверное, имелось введу что нельзя его использовать для инстанцирования.

Наверное, имелось введу

Так это ж, как говорят в Одессе — две большие разницы! :)

Можно сказать и так: IDE при наборе кода не показывает, что у абстрактного класса есть конструктор :)

Ahahaha, полиморфизм это гораздо более широкое понятие чем ты тут написал.

Я давал определение полиморфизма?

полиморфизм это гораздо более широкое понятие

да полиморфизм — это просто, как полено: переводится с греческого как πολὺ — много, и μορφή — форма :)

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

Ну это уже выходит за рамки для молодого джуна :)

Все классы которые реализуют интерфейс полностью подписываются под манифестом. Ну, а далее, применяется полиморфизм ко всем классам, которые реализовали данный интерфейс. Вот, настучал:

gist.github.com/...95bffbb451e9c03

p.s. +1, Моя ошибка.

А не проще было сказать так: абстрактный класс кроме абстрактных методов может также содержать обычные, интерфейс может содержать только абстрактные методы? А то пол страницы из учебника, экзаменатор заснет.

Пардон, что не отвечал долго. Вот что я заметил, проводя собеседования: теорию люди могут рассказать на зубок, хотя в случае с полиморфизмом в Java или C# чаще всего говорят о виртуальных методах, упуская из виду другие виды — adhoc и parametric, т.е. перегрузку и дженерики. Про полиморфизм в Clojure с помощью протоколов мне или про трейты, видимо, услышать вообще никогда не доведется. Но это мелочи.

Интереснее давать джуниору какую-либо предметную область и затем задавть вопоросы по его дизайну. Обычно берется предметная область с подвохом. Например: есть деревья, хвойные и лиственные: елки, березы, сосны, дубы и т.п. Есть лес, когда туда приходит осень, деревья сбрасывают листву. Хвойные не сбрасывают, так? Джуниор бодро рисует диаграмму наследования, где лиственные деревья отличаются от хвойных тем, что умеют листву сбрасывать. Затем начинаются вопросы. Есть лиственница — дерево хвойное, но хвою на зиму сбрасывает. Как с ним быть? Или еще что-то из той же оперы. Правильных ответов нет, но поле для беседы просто огромное.

Вы не поверите, как часто кандидат начинает безбожно плавать в случае, если неудается точно разграничить объекты. Ни одно собеседование в таком случае не похоже на другое — что только люди не придумают! Но огорчает две вещи: во-первых, процентов 80% кандидатов просто замолкают и тупо смотрят на листок бумаги с диаграммой классов, как бараны. Во-вторых, почему-то почти никто даже и не вспоминает об интерфейсах, об энумах или о том, как подобные проблемы решены в стандартной библиотеке Java (итераторы коллекций, например, кидают UnsupportedOperationException).

В общем, многие говорят, что знают и понимают ООП, но при встрече с проблемой совершенно не могут его применять. Можно долго спорить о том, надо оно вообще или нет, но на мой взгляд задачи на ООП — это очень удобная тема, чтобы действительно прощупать способность кандидата к решению задач и соображалке.

Пример я привел вполне тривиальный, можно легко придумать другие области, в которых существует похожая ситуация. Также рекомендую почитать про en.wikipedia.org/...ellipse_problem

Ну и отдельное спасибо всем, отписавшимся в двух ветках — получилась отличная дискуссия с кучей хороших идей и замечаний.

Я не понял про лес, про зиму. Это имеется ввиду отделять постоянные от изменяемых, паттерн «стратегия» ?

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

Джуниоры, как я выше писал, часто воспринимают собеседования как экзамен — задается вопрос, на который нужно «правильно» ответить. А на самом деле цель собеседования — это не проверять ответы, а просто посмотреть на процесс мышления и решения задачи, решить — подходит человек или нет: сможем ли мы с ним работать, легко ли будет его обучить, насколько быстро он воспринимает новую информацию, насколько легко он может адаптироваться, ну и все в таком духе.

У меня был один неудобный джуниор (взяли его без моего участия). Проблема с ним была одна: когда рассказываешь ему про что-то, он воспринимает твои слова как достаточное предписание к действию, а не как указатель общего направления. Т.е. он застрял на пути из А к C. Ты ему рассказываешь, как добраться от A до B и все. Обычно люди сами доходят с B в C, а он все время останавливался и опять спрашивал. Сами понимаете, работать с ним пришлось гораздо больше, чем с другими, но парень все равно научился. Так что вопрос не сколько в том, сможет человек работать или нет, вопрос в том, сколько на него придется потратить сил, энергии и времени, прежде чем он сможет работать.

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

Не переживайте, если вы только собираетесь начать карьеру — у вас все получится!

Ну, вот! Хороший человек и начальник. Есть чему поучиться и послушать.

Не то что некоторые. Пальцы позагибали, носы позадирали и троллингом занимаются.

Спасибо, очень было интересно Вас почитать.

Да не за что! Только вы в другие ветки обсуждения тоже позаглядывайте — там дельные советы дают, хоть и более придлиженные к языку. Все равно про отличия абстрактного класса от интерфейса я тоже, бывает, спрашиваю.

Кстати, еще такой совет: всегда, когда вас просят нарисовать диаграмму классов, задавайте себе вопрос: а стоит ли делат классы-предки классами? Не подойдут ли интерфейсы? Потому что, во-первых, в реальных проектах классы мы почти не наследуем — все через интерфейсы строится. А во-вторых, думать в терминах интерфейсов означает думать в первую очередь о контракте между подсистемами, а не о реализации. Это очень помогает и при проектировании систем, и при работе в команде, где очень часто приходится работать с чужими объектами и сущностями.

Т.е. если вы придете на собеседование, где вас попросят нарисовать диаграмму классов (ну или код набросать — такое тоже практикуется), а вы для предков начнете применять интерфейсы, то вас заметят и тоже поставят ощутимо весомый плюс. По полиморфизм через override тоже лучше говорить с использованием интерфейса.

Да, я начал читать про паттерны, там дают советы — стремиться к слабой связанности взаимодействующих объектов. Программировать на уровне интерфейсов, а не реализации. Отдавать предпочтение композиции перед наследованием. :)
Все аспекты поведения, которые меняются реализуются (инкапсулируются) отдельно через интерфейс.
В книге приводится пример с утками

s58.radikal.ru/...6a18cc1166a.gif

Спасибо большое за дельные советы!

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

upd: и да, про енумы меня покта никто не спрашивал. хотя лично имхо, весьма полезная и часто необходимая штука.

енумы весьма полезная и часто необходимая штука

Наджаве чтобы преобразовать енум, скажем, в интЫ, нужно в нем отдельный метод писать — какая жопа (увидено через амбразуру с№, где все енумы сразу интовые :)

))) честно говоря, из камента так и не понял, в чей огород был камешек, то ли в джаву, то ли в ц-шарп.. ну да неважно )))

кстати можно обойтись не методом, а свойством, и обращаться как-то так

int code = Codes.BAD_REQUEST.intValue;

и разве не в методах вся прелесть енума? )) можно реализовать енумы вообще без данных — только с методами. для маленьких фабрик (по 1-2 метода) — то, что доктор прописал — все предопределенное поведение инкапсулируется в один единственный класс. ну разве не прелесть?.. а для хранилища простых интов и обычного класса с константами, имхо, более чем достаточно

Джуниоры-архитекторы, наверное, не нужны. А вот джуниоры, понимающие, зачем архитектура, — вполне подойдут. А особенно хочется джуниоров, которые не строят замки иерархий и псевдопттернов.

Насчет тем, про которые не спрашивают. Я заметил, что стороной часто обходят энумы, вайлдкарды в дженериках, — это для джуниоров, а для синьоров — dynamic proxies, weak-phantom references и класслоадеры. Хотя поле для разговора отличное — как раз для интервью.

А что бы вы подумали о джуне, если бы он предложил использовать, например, декоратор?

Да я ж выше написал: я бы его послушал, пообсуждал бы его решение, а потом либо сам предложил альтернативу, либо у кандидата такая мысль закралась.

По факту могу сказать, что большинство джуниоров начинают искать во всем этом паттерны — мне попадались и декоратор, и визитор, и стратегия, и что-то еще. Я уже писал, что у джуниоров сохраняется этот иститутский подход:
— Меня спрашивают из того, чему меня учили. Учили меня энкапсуляции-наследованию-полиморфизму и паттернам. Про первые три уже поговорили — значит, по паттернам спрашивают. Какой бы тут завести паттерн?...

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

Идея с тем, чтобы у хвойных деревьев тоже был метод «сброситьЛистья», который просто ничего не делает или бросает исключение, возникает гораздо реже, как ни странно. Странно не потому, что я считаю, что эти подходы лучше (правильного ответа нет), а потому что мне они кажутся проще.

Идея с тем, чтобы у хвойных деревьев тоже был метод "сброситьЛистья

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

может сделать интерфейс — «Сбрасыватель» и имплементировать его и в листв. породах и в лиственнице, которая наследовать будет класс хвойные деревья (потому что имеет хвою)

может сделать интерфейс — «Сбрасыватель»

нам для каждого конкретного дерева прийдется его имплементировать, т.е. дублировать код сбрасывания листьев

Скорее не так.

Все деревья имеют метод «сбросить()» (потому что ели и сосны тоже сбрасывают листья, просто не одним махом), и реализовывают интерфейс «Сбрасыватель». Тот же интерфейс реализует класс «Лось», но реализация его метода «сбросить()» будет значительно отличаться.

точно. Спасибо, наставили на путь истины

Ну да, именно так и нужно — сделать абстрактное дерево, у которого были бы реализованы все методы, а при наследовании йолкой мы переопределяем данный метод, и просто не вызываем в нем метод базовыйНи один шаблон тут и не клеется.

В первом приближении такое решение конечно же подойдет, особенно на собеседовании.
Однако есть копнуть глубже, то в нем есть очевидные проблемы:
1) переопределять методы, делая их пустыми, не очень красивое решение. Представим себе что наваял джуниор на проекте такой лес, стал синьором и пошел творить облака. А на его место пришел новый джуниор и дали ему задачу расширить иерархию например пальмами.
Он честно расширил, но вот метод сбрасывания листвы не переопределил, явно ведь этого не требуется... — Всё, капец — пальмы сбросили осенью листву — экологическая катастрофа!!! )))
Ну да это мелочи, хуже с проблемой номер 2 — дублирование кода в подклассах:
2) Решил заказчик, что дубы, клены и березы должны сбрасывать листву в сентябре, а тополи и каштаны в ноябре... В результате в предложенной архитектуре получаем дублирование кода методов со всеми вытекающими проблемами.

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

И вот тут замечательно «клеются» шаблоны, в частности справедливо упомянутый в первом же ответе паттерн Стратегия: инкапсулируем поведение сбрасывания листвы в отдельную иерархию классов, объединенных общим интерфейсом, который связываем с базовым классом основной иерархии через композицию. — И все, нашему лесу не страшны никакие суровые украинские зимы — мы готовы к любым изменениям с минимальными усилиями. :)

В результате в предложенной архитектуре получаем дублирование кода

то вообще алиас капут такой архитектуре наступи

Та ну какой алиас капут???
doob.cs
public override void SbrositListya()
{
if (season == Seasons.Holodno)
{
base.SbrositListya();
}

}

не переопределил, явно ведь этого не требуется

если ЯВНО в документации не указано — значит, пальма тоже сбрасывает листья зимой :p

palma.cs
public override void SbrositListya()
{
// Do nothing

}

Дублирование ветвлений — не грех, все ясно, читабельно, и комильфо. А если кто забыл переопределить для затычки, при условии, что в ТЗ сказано явно — они не сыпятся, и пальмы посыпались — ну кто ж ему Буратино? Для особо забывчивых можно порекомендовать абстрактные методы :) Например: AbstractTree.cs
public abstract void OnSeasonChanged();
public Seasons season
{
set
{
mSeason = value;
OnSeasonChanged();
}

}

Либо, чтобы явно избежать сбрасывания листвы пальмой -
public abstract bool ShoudListyaBytSbroshennymi();

а в базовом классе его дергать. Хотя, конечно, прийдется все время джуна ревьюить, если он лезет в базовые классы. А если еще введет и абстрактный член — то тут уже и наследников прийдется ревьюить, на предмет а как по-умолчанию они листья-то сбрасывали. Хотя, с другой стороны, синьор на то и синьор, чтобы хорошо дизайнить базовые классы и компоненты :)

Стратегия: инкапсулируем поведение сбрасывания листвы в отдельную иерархию классов

А если у вас потом случится целый лес деревьев, мне че-то кажется, что если данные классы нужно будет инстанцировать под каждое дерево — у вас может случиться нехватка памяти. Можно, конечно, выйти из положения синглтоном и блокировками, но в этом случае листья рискуют сбрасываться целый день, деревья будут идти последовательно :)

Ну за гибкость почти всегда приходится чем то расплачиваться, например ресурсами — тут уже нужно выбирать что важнее исходя из оценки конкретной задачи, собственно поэтому автор вопроса верно заметил что правильного ответа нет. :)

исходя из оценки конкретной задачи,

обычно все требуют performance и stability

правильного ответа нет

Чем меньше у вас ресурсов, и чем меньше тактовая частота процессора, то чем меньше будет у вас инстанцирований — тем правильнее. Куча — не резиновая :) А если еще инстансы будут вызывать утечку памяти — это будет чревато боком, невоспроизводимыми багами и овертаймами :)

Иной раз овноляп эффективнее шаблонного подхода :)

1) переопределять методы, делая их пустыми, не очень красивое решение.

Ну, оно не червонец, чтобы всем нравиться, и весьма уместно, если «ничего не делать» является скорее исключением, чем правилом.

У меня есть несколько вопросов, точнее, один, но длинный:

Человек написал статью не для «отцов русской демократи», да? — Он ее написал для людей что хотят и пытаются как-то влезть в IT индустрию как разработчики, но почему-то каждый крайне умный «сеньор» считает за прямую обязанность бросить куском кала в автора, а в чем суть? — Самоутверждение? Вы умнее? Вы «круче»?

Whatever guys — напиши свой «опус» о том как человеку найти работу, будем ставить вам плюсики, а так же кадаться пирогами и другими подручными средствами в Вас. Уже тошнит от этого пафоса, который так и рвется из всех углов, вам самим не надоело? А?

Задолбали «бывалые», которые кидают говно на вентилятор, работайте лучше, ценить Вас будут больше, чем за попытки самоутверждения над другими, более юными товарищами...

Да причем здесь ребе то?

Есть множество техник как ловить очень умных но не умеющих на собеседованиях. Как мне кажется, я бы вас поймал.

И нет серебряной пули, нету....

Я, простите, извиняюсь, но мне кажется, что вы бы собеседование со мной не прошли бы.

Куча пунктов, и куча асампшенов. И как вы думаете, что поговорка «на каждую хитрую %%% найдется свой ???». Сколько таких «противоскамминговых» технологий было изобретено?

Уважаемый Мегапокемон! На одном из проектов, под вашим мудрым руководством, я был джуниором, и вы, замечу, были довольны результатами моего труда. Да, собеседовали меня не вы, но тем не менее. Более того, как ПМ, вы на данный момент не прошли бы собеседование у меня. Так что перестаньте гнуть пальцы и одумайтесь. Я написал советы тем, кто не знает с чего начать и как готовится. Перечень советов покрывают базу собеседования. Естественно, что джуна может завалить супер крутой мега лид, но к джуну и требования соответствующие.

Жесть. Я-то думал только на администрацию ДОУ наезжают, а вы и между собой так общаетесь. Спасибо, мне полегчало! %)

Помнится, в прошлый раз когда я общался тут с сокурсниками, модератор потер коменты.

Я щас схожу за линейкой.

В предыдущем посте я имел в виду то, что если на собеседовании я обнаруживаю, что человек юлит\хитрит в попытках понравиться и дать «правильные ответы на правильные вопросы», то скорее всего работать с таким человеком будет печально.

Это не заваливание джуна вопросами от мегалида, технологичными, или еще какими-то. Это борьба с хитрожопостью, ежели она была на собеседовании, то будет и в работе.

Еще раз FAQ на тему как правильно подготовится к собеседованию, а не как кинуть интервьювера.

Хорошо, и чем например п. 5 (не будем пока про технологии) не хитрожопость?

Если вижу что человек шпарит заученно, то блин, спрошу его какая у него любимая компьютерная игра. Или куда он ездил летом отдыхать.

Ну нашли к чему придраться :) Но я отмажусь, ибо написал:

Базовая грамматика как бы тоже не навредит.

А с её помощью можно сказать: май фейворит гейм из тетрис энд ай воз ин Москоу ласт саммэ.

Ага. Май нейм из Вова, ай эм э тейбл, ай лив ин форэст.

Четвертый пункт. Если товарищ сразу будет шпарить готовые ответы на логические задачи, то это не покажет логику. Это покажет что человек прочел книжку. Конечно, умение читать умные книги — похвальное, но в таком случае придется мучить кандидата вопросами на тему «нарисуйте дом» или же «сколько булочных в Тэрэбовле», ну или еще чем-либо. У джуна такое легко выбивает почву из под ног — как же так, я готовился, а тут валят.

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

Пункт номер 4: не обязательно говорить 42 тут же после вопроса, можно посидеть, подумать. Еще раз, я рассказал про структуру собеседования, что спрашивают, как подготовится, где взять похожие вопросы и т. д. не более.

Пункт номер 7: никто не рассказывает про джуна что он супер мен, но напомнить что такое есть — не плохо.

Да, пиши свой хау ту, заценим.

На втором шаге можно также использовать вопросы из пособия для подготовки к SCJP, если конечно собеседование по Java.

Еще настоятельно рекомендую стандартный Java Tutorial с сайта Оракл. Почему-то многие его игнорируют, хотя написан очень дельно и затрагивает довольно важные моменты. Читается легко, запоминается хорошо. Примеры отличные.

Курс молодого сеньора (не сдержался):

На собеседовании сидишь с видом, что вот ещё немного процедуры, и можно будет перейти к пиву. При рассказе лида о том что там у них в проекте — всем видом выражаешь удивление тем что они смогли тебя заинтересовать. Потом пишешь на бумажке, как обычно, реверс строки на Си. Профит. :)

тут не ржать надо, а проходить по пунктам.

Пункты далеки от реалий.
Вы сами-то в глаженной рубашке проводите собеседования или позволяете себе приходить в носках недельной свежести? :))

Яков Фейн ближе к делу говорит. Человек с большим именем, а ведёт себя скромнее чем некоторые: cloud-cuckoo.com.ua/...ie-po-core-java

я собеседую в джинсах, но о чистоту носков гарантирую. Да, все пункты испробованы лично на себе, так что работает — инфа 100%

Яков Фейн навів тільки пункт 2 із списку ребе Кацмана

Следующий шаг — ищем вопросы для собеседований. Открываем гугл и тайпаем «c++/java/php interview questions». Вопросов будет много, но они повторяются. Делаем из них каталог и изучаем :)

У ребе Кацмана ще є поради не технічного плану.
Вони теж важливі.
На співбесіді дивляться, що ви за жук, і чи захочуть з вами працювати.

Технічна сторона — це одне, але кандидат смердючий (пункт 8, сигаретний дим, немите тіло), сварливий (пункт 9) має менше шансів, ніж стерильний та доброзичливий.

Ребе Кацман істину глаголить.

Яков Фейн про смердючість може й не згадує у своїх подкастах, постінгах, бо стерильність для Штатів очевидна.

Але він НЕОДНОРАЗОВО згадував про людей із Совка, для яких було 2 мнєнія — мое и чужое неправильное.

До пункту 5), кандидата ще можуть попитати про всяку HR-ську муть, типу «ким ви бачите себе через 5 років», «які у вас плани на життя», і т.д.

Що відповідати — треба дивитися по ситуації. Це не їх справа, а втручання в особисте життя. Але такі ПРАВИЛА гри. Відповіді на ці питання можна і нагуглити.

Это случай одного дня — можно прийти “выглаженным”, не накуренным и с хорошим настроением. В этот знаменательный день. Всю остальную часть времени, грязным, мятым, накуренным, противным. :))

Гении, они именно такие. :)
У меня в армии был сосед. Страшная вонючка. Постоянно не стиранный.

Зато человек владел свободно пятью языками (писать/читать/разговаривать), знал прекрасно математику и физику. У него мозги работали не как у простого человека. Он выделялся сильно своим поведением.

Посмотрите на Онтоле. Он не производит впечатление опрятного человека, зато это мега-мозги.

Ребе Кацман не девушку себе на ночь выбирает, а человека, который должен не создавать лишних проблем и выполнять свою работу. Поэтому отдавать предпочтение человеку, который лучше других Вас разыграл (или подлизал) это как минимум глупо. :)

Одно дело, если бы на одно место приходилось 100 человек. Тогда можно сидеть и выбирать, кто глаженный, а у кого грудь больше. Реалии, куча вакансий. Думаете потому что люди курят? :))

На співбесіді дивляться, що ви за жук, і чи захочуть з вами працювати.

Приведите, пожалуйста, несколько примеров.

В загальному так і є. Вибір буде «прі прочіх равних». Коли того вибору нема — доводиться працювати з тими, кого наберуть (о наболєвшем — штинючими і т.д., блін XXI століття надворі, гаряча вода як не з бойлера, так хоч баняк на кухні нагріти, пральні машини є, на крайняк сервіс для прання «Бульбашка», як же ж заманали ці смердючі артефакти Совка).

Посмотрите на Онтоле. Он не производит впечатление опрятного человека, зато это мега-мозги.

Гений-одиночка в аутсорс не зовсім підходить. Він в колективі буде працювати.

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

Підлизу теж видно за кілометр :-)

На співбесіді дивляться, що ви за жук, і чи захочуть з вами працювати.

Приведите, пожалуйста, несколько примеров.

Збірний образ
Наприклад...
На співбесіду не приходить.
Дзвінки збиває, не піднімає, не передзвонює.
Приходить на співбесіду із запізненням.
Чувак відригує. Колупається в носі. Крутить козявки. Задумливо їх жує.
На питання каже «не зна-а-аю». Не показує хід думок, вгадує. Не задає наводящих питань. «Я того не робиу». «То не моя справа». «Мені таке не-е-е-цікаво». «Я не буду писати під проперпропрітпро... пропрієтарну систему». Мовчить. Думки висловлює незв’язно і безсистемно. Сперечається не по темі, а «із любві к іскусству». На доповнення-поправки заводиться з пів-оберта, сприймає це як особисту образу. Доводить інтерв’юерам, що вони лохи, а він хлоп хоч куди і його люба кантора візьме.

і т.д., і т.п.

Ребе Кацман не девушку себе на ночь выбирает, а человека, который должен не создавать лишних проблем и выполнять свою работу.

При этом не создавая проблемы и неудобства для окружающих. Ваш супер мега умный и вонючий математик и физик — подходит для удалёнки.

Какой Вы нежный человек.

Если завтра война? Как Вы будете жить с этими людьми? Ведь, один из них может протянуть руку, когда Ваша жизнь будет в опасности.

Дайте кандидату авансом денег на 10 кг стирального порошка.

Если проблема только в этом. :)))

Я не нежный. Кацман суров но справедлив. Если человек будет неприятен людям из команды, то это не в плюс команде. Да и каждый подбирает под себя. Вот станете 23х летним PM, будете подбирать под себя народ.

Вы в какой компании проводите собеседования (во Львове, надеюсь)? Я хочу прийти, посмотреть. Потом напишу отзыв.

Посмеёмся друг с друга. :))

Вот станете 23х летним PM

К сожалению, пролетел по возрасту.

Не, я не во Львове, так шо без шансов. Но если будете готовы, могу по скайпу по знакомству пособеседовать на жабу/си/плюсы тренировки ради

Можно уже начинать?
s018.radikal.ru/...04d4c6420fc.png
В exception(ах) пропустил часть, из-за английского языка.
Thread не читал пока, ничего не могу ответить.

и с седьмого пункта (паттерны) тоже ничего не отвечал.

Кстати, мне показалось, что в нескольких примерах есть ошибка, я отметил их *** и внёс поправку.

Я не нежный. Кацман суров но справедлив. Если человек будет неприятен людям из команды, то это не в плюс команде.

А якщо колективу він буде не приємний, того що багато вчить і хоче різко рости, а колектив любить мяко кажучи віддихнути добре:)?

Тоді йому саме час шукати інший колектив.

А в таких коллективах Кацман не работает.

Дайте кандидату авансом денег на 10 кг стирального порошка.

Если проблема только в этом. :)))

Жарти-жартами, але люди без гігієнічного виховання сприймають наказові поради вишестоящих буквально, без розуміння суті.

Живий приклад, було пару років тому. ПМ каже без тикання пальцями, «чувакам, що часто ганяють в теніс, вишестоящім начальством рекомендовано ходити в душ».

Чувак ходить в душ. Витирається рушником, який кисне 3 місяці (я його випадково нюхнув колись, не міг зрозуміти, що так штиняє у душі, бльоооо), вдягає ту саму футболку, в котрій ганяв у теніс.

Він як солдат. Могу копать, могу не копать.

А результату нема :-). Бо як відомо, своє г. не пахне.

Пральний порошок йому не допоможе. Він ще може подумає, що то зовсім інший, нюхатєльний порошок :-).

І дарування всєм офісом антиперспірантів і т.д., тільки приводять до накладання хімії на немите тіло.

Это решается разговором. Пусть человек делает сам свой выбор. Ходить ему чистым с работой или ходить грязным, но без работы.

Терпеть и нюхать? Ну, терпите, нюхайте. :)))

Это решается разговором.

Профілактична розмова була колись з іншим.

Але їй-бо, краще до таких розмов не доходити. Неприємно.

Так вот, повертаючись до пунктів порад ребе.

Зустрічають по одьожці :-).

Посмотрите на Онтоле. Он не производит впечатление опрятного человека, зато это мега-мозги.

Две ошибки в одной строке. Первое — мега-мозги Онотоле — на самом деле тщательно и многолетне выработанный имидж. Если вы с такой задачей справитесь, то зачем вам советы по собеседованиям? :) И второе — специфический стиль одежды Онотоле никак не коррелирует с неопрятностью — его жилетки чистые и не сшибают с ног запахом за три метра.

В США человек который приходит два дня подряд в одной и тойже рубахе есть моветон это раз.
Перед собеседованием принято спрашивать дресскод компании для этого дела.

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

США — это не Украина. Там у начинающих специалистов нет проблем купить большой гардероб, который будет на порядок дешевле и качественнее украинского. Не забывайте в какой стране Вы живёте и какие люди Вас окружают.
Наверное, Вы родились в благополучной семье. Мама/папа каждую неделю покупали Вам носки, джинсы, рубашки и т.д. Уже хорошо, если покупали раз в месяц. Отсюда, такие рассуждения.
Берите стандартную ситуацию. Когда у студента вся семья живёт на 3000 грн + платить за обучение нужно. Естественно, что вся семья вынашивает свои вещи до дыр. Моё было удивление, как в Израиле большинство подростков носили трусы. Они их не стирали! Одел, день поносил, выкинул, одел новые.
Один раз в месяц ко мне приходит уборщица, снимает показания счётчиков-воды. Разговорились с ней, оказывается, она стирает вещи руками. Почему у неё не может быть сын, который начинает свой путь программиста и который пришёл на собеседование в старых вещах?

Другой вопрос, если программист имеет стаж 5+ лет, требует 2K$ и в грязной одежде. В таком случае, можно только посоветовать жениться. :)))

Перед собеседованием узнать дресс-код — не вопрос. Пусть информируют кандидата про дресс-код, когда приглашают на собеседование. Компании сами должны начать вводить такую культуру.

Наши студенты тоже начинают от 200$ — это по Вашему деньги сегодня? Маршрутка/обеды/сигареты.

Из того что вы написали — совпало только то что я родился в замечательной семье.
Правда это было в маленьком городе за 100+ км от Днепропетровска. И стипендии в мое время были поменьше ваших — 15 грн аз при цене проездного 11-13 грн :) так что не надо ля-ля.
Но живя много лет в общежитии тоже среди таких же как я понаехавших я понял одно что быть наглаженным и опрайтным можно всегда. А вот засранцы они везде засранцы.

P.S. моя первая зп как программиста была 100 баксов

Ну в штатах, я думаю джинсы можно за 20 баксов купить, а футболку за 5 :)

Не плутайте чисте з новим :-)

В США человек который приходит два дня подряд в одной и тойже рубахе есть моветон

Это наверно еденственный стоящий аргумент против идеи переезда в шаты на постоянку.

Перед собеседованием принято спрашивать дресскод компании для этого дела.

Это куда ? в банки/госструктуры ?

без разницы куда. если человек адекват, то он спросит этот вопрос обязательно.

есть полно компаний в которые люди в костюмах приходят только на собеседование. все об этом знают, но такова традиция :)

да ну, это просто правила игры такие — собеседование == костюм, на завтра уже можно приходить в джинсах в технологических компаниях.

В финансовые конторы надо ходить в business casual обычно и контракторы так же одеваются. А обычный народ (non customer facing) в шортах ходит.
business casual это не костюм — это штаны-не-джинсы + рубашка голубых оттенков.

Но вообще я согласен — business casual — sucks big time.

+ рубашка голубых оттенков

Лучше уже защитную рубашку в стиле милитари: если ее заляпать кофе — будет совсем незаметно :)

Можете переходить к пункту:

4) Создаем тему на ДОУ шо в конторе А подают кофе в не красивых чашках.

Когда мне предлагали кофе/чай в Globallogic, я отказался.
Поэтому про красивые чашки ничего не могу сказать. :)

потому что там в стаканчиках :)

Потому что лучшее кофе сваренное дома. :)

предложить кофе на собеседовании — уже может быть началом того же собеседования. Это не так касается прогеров, но вобщем-то бывает в других сферах, знаю точно.

Резко отказался от всего — отметили минус за коммуникабельность.

блин, а я сегодня отказался от кофе....

Правильно сделали. Если бы вы его разлили на HR та еще была бы веселуха. Профессиональные рекрутеры не советуют соглашаться на напитки во избежании таких конфузов.

Спасибо за статью, теперь есть что кидать в ответ на вопрос, «как стать Джуниором?!11»

Таких статей уже было и не только на ДОУ. Но вопрос:

как стать Джуниором?!11

Все равно задают. А все почему? Патамуша люди, способные так сформулировать вопрос, не задают такие вопросы (ну развешо гуглу :) ).
А те кто задают его на форумах или знакомым, в реале задают вопрос:

«как МНЕ стать Джуниором?!11»

Улыбнуло ))

выучить синтаксис цикла for.

Учим)

for(;;){}

К сожалению, если на собеседованиях попросить у джуниора написать что-то с циклом for, сдаются где-то процентов 40. При этом многие из них вполне разбираются в предмете и могут накатать ту же задачу в IDE минут за пять. Так что, видимо, совет про синтаксис все-таки меет под собой основания.

0) Нужно выбрать направление в которое есть желание попасть. Не стоит отсылать резюме в одну и ту же кантору, к примеру, на джаву, С++, PHP и т.д. Это явно указывает на то, что вы не знаете ничего из указанного и мечетесь в поиске. HR вас забанит за флуд мигом.

Да, но если на сайте работ — то лучше все сразу размещать. Они не на столько advanced и ищут то, что горит. Через неделю уже могут и забыть, что вас приглашали.

3) Не забываем о классике жанра. Читаем про поняти О большое, а так же про списки, деревья и массивы. Для джуна — самое оно. Вы должны иметь представления о сложности операций и четко знать как работает вставка, добавление etc.

Заметьте, N лет назад об этом не спрашивали. А теперь Senior-s сами выучили и долбают Junior-s. Seniors, они это уже тоже выучили!

4) Задачи на логику. Если еще не читали Паундстоуна «Как сдвинуть гору Фудзи» — самое время начать. 90% задач на логику будут из неё.

Вот облом. А я не кошерно раньше спрашивал значит.

5) Английский. Даже если вы его не знаете, как хотите но выучите рассказ про себя, своё хобби и работу своей мечты. Напишите на бумажке, дайте проверить грамотным людям. Базовая грамматика как бы тоже не навредит.

Ну, то такое. Лучше заставить изучать в принудительном порядке.

6) Итак, базу поднатаскали, надо приступать к атаке. Для начала неплохо провести учения. Выберете компании, в которых вы менее всего хотите работать, а точнее самые ужасные канторы с наихудшими отзывами. На них надо оттачивать мастерство. В нормальные канторы отправлять резюме следует после учений.

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

7) Хорошо если в фирме, на которую вы отправили резюме, есть ваш знакомый. Он может пойти и подёргать HR, рассказав что его друг не спит ночами, всё мечтает на работу устроиться. Бонусов за джуниора конечно не дадут, но пивом угостить его всё же стоит, ибо вы будете не просто джун, а джун с рекомендацией сотрудника.

Да, работает.

8) Итак, вы пришли на собеседование. Большая просьба от Кацмана: если вы курите, сделайте так чтобы тот, кто вас собеседует этого не заметил. Если он курит, то ему всеравно, если нет, то это явно не плюс в вашу пользу. Лично меня напрягают разговоры с пачкой красных прилук.

Ну да, как бы пополняет участников совещания «за углом». Скоро будет «в теме» и вероятно станет обсуждать и вас тоже. Вторая причина (кроме предвкушения запаха зловонного дыма), по которой некурящий будет чувствовать дискомфорт.

9) Смотрите на оппонента как Муму на Герасима. Толкать умняки и понтоваться сейчас не время. Если не поняли вопрос — не тупите, а уточняйте, задавайте свои вопросы, попросите наводящий вопрос, подсказку. Сказать «я не знаю» — не есть гут.

Да, согласен, очень производит впечатление вовлечённость собеседуемого в процесс интервью. Зевать с безучастным видом не рекомендуется.

Заметьте, N лет назад об этом не спрашивали. А теперь Senior-s сами выучили и долбают Junior-s. Seniors, они это уже тоже выучили!

Ну это где и как. В одной из кантор лет 7 назад при собеседовании на джуна я и строку ревертил, и оценивал сложность поиска в дереве. Правда меня взяли.

Распиарили сейчас O. Признак хорошего образования. Хотя, почему бы и нет.

10+ лет назад в ISD алгоритмы были обязательным условием тестирования. Об О нотациях не говорили конечно но задачи были уровня что спрашивают сегодня в амазонах и майкрософтах. Кроме того все задачи надо было писать на листиках и оценка состояла из 2 частей половину баллов ты получал за правильность решения а вторую половину за элегантность.

Спасибо за инфу. 10 лет назад я входил в число тех, которые проверяли задания кандидатов в ISD :)

Выше я писал о том что до 2002-2003 алгоритмы на листике были обязательным условием приема на работу и сейчас некоторые компании возвращаются к этим стандартам

А кто когда и как проверял алгоритмы в isd старики помнят :-)

Не палите Паундстоуна, а то прийдеться выдумывать новые задачки :-)

Годно, но долго. Большинство не осилят, но и в газенваген свалить не захотят, будут ныть о том как их, мальчишечек, злые хыры опускают, в компаниях нынешних нигде жуниоры не нужны, щасття у жизни немае...

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

Нашел отмазку, тоже мне...

Слова не разработчика, но тестера?

1

Тестер — прибор ru.wikipedia.org/...wiki/Мультиметр

Я — тестировщик :)

2

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

Более того, необходимы, мгм, проект определенного масштаба, и высокие требования к продукту на выходе.

Иначе, мол, не получится...

Дык вот, это блокеры только в (пока еще) ограниченном сознании джуниора.

Если для сферического джуниора недостаточная масштабность проекта является оправданием низкого качества его продукта на выходе, то это надо лечить через «пиздялэ ла зубилеле», простите за мой изысканный молдаванский, а не поощрять или уж тем более — этим оправдывать.

Низкое качество нечем оправдывать, его можно только зафиксировать и принять как данность.

Не джуниоры нужны везде, и не синьоры нужны, а нужны адекватные люди, и уж неважно, в каком они статусе — джуниор или старперьёр.

Это типично для начинающего рассуждать эгоцентрично («дайте мне хорошую контору, дайте мне хороший проект, дайте мне опытных наставников, дайте мне кирпичи, дайте мне цемент, дайте мне киздамэсый, и вот тогда я буду развиваться и что-то сделаю!»), но в какой-то момент следует кое-что переосознать.

В частности — никто не должен тебе давать, да еще и платить за это. Сам развивайся. Сам бери. Сам спрашивай, где и что взять. Сам делай из того, что есть, хороший проект.

В общем, ни любви, ни тоски, ни жалости, только «Попробуй тут не сдохнуть!» © :)

Тестер — прибор ru.wikipedia.org/...wiki/Мультиметр

Я — тестировщик :)

Какие мы гордые :)

Мы пофигуисты.

По правилам безупречного русского языка тестировщик вообще должен называться «тестор» с ударением на «е», поэтому какой-то там «тестер» вообще не воспринимается :)

Эка вас задело за живое, граммар-спивпрацювальнык.

Может, расскажете, как вы устраивались на свою первую работу?

И тестувалнык.

Отчего же не рассказать.

Зашел я, значит, в академию наук, сижу, в словаре Ожегова переправляю маркером все точки на точки с запятыми. Ну, мне и говорят — а хочешь сложные сайты тестировать? А я такой — нет! Ну, и следовательно, стал тестировщиком.

:))) Тонко, молодец.

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

Однако есть вещи, которые можно получить только в профессиональной команде — общение с опытными разработчиками, навыки взаимодействия с другими участниками процесса разработки, знание некоторых тонкостей (например, верстка «под ключ» и верстка постоянно развивающегося проекта — это несколько разные вещи). Я давно не джун, но хорошо помню, что после кучи мелких проектов, которые зависели только от меня, понадобилось некоторое время, чтобы привыкнуть и приспособиться к командной работе над крупными заказами, а в продакшене обнаружились некоторые особенности, соблюдение которых для меньших масштабов было избыточным.

Понял, что неверно понял.

Да, окружение формирует сознание.

Тестер — прибор ru.wikipedia.org/...wiki/Мультиметр

Вот теперь до гробовой доски прийдётся сдерживаться чтобы не называть тестеров мультиметрами... :)))

а точнее самые ужасные канторы с наихудшими отзывами.

Давайте договоримся, шо обманные пункты и певцы в синагогах здесь совершенно ни при чем.

спасибо, ребе, повеселил!))

самое ценное, конечно, в последнем пункте, чтобы запомнилось. чувствуется рука мастера!

9) Смотрите на оппонента как Муму на Герасима. Толкать умняки и понтоваться сейчас не время.

Надеюсь парочка джунов вспомнит добрым словом ребе Кацмана.

Путь ребе Кацмана очень длинный и сложный, такое чувство шо он не ребе Кацман, а какой-то китайский философ КацЦин. Есть вариант проще:
1) Программисту не надо знать шо все надо начинать с 0 :)
2) Читаем половину книги по джаве/дотНету/ПеХоПе
3) Заваливаем собеседование в «лидере рынка» (Завалить можно потому что даже половину книги не осилили или просто вести себ так шоб контора поняла где ее место)

4) Создаем тему на ДОУ шо в конторе А подают кофе в не красивых чашках.

В некоторых конторах Днепропетровска в последнее время кофе вообще не предлагают.

(тест)

Это ужасно!!! Видимо чашки программеры поворовали)))

А они требуют, чтобы каждый свою из дома приносил. У меня уже чашка с 3 логотипами.

И цепочкой к себе приковал чтобы уж наверняка)))

Да, такая себе испытанная боевая чашка.

(по секрету) И не надо! У меня воспоминания о глобалоджиковском шаровом «кофе» до сих пор рвотным рефлексом отзываются.

Неа! Зерновой кофе, «крафт» какой-то для вендинг-машин, не помню названия.

кирпичная крошка наверное

Подписаться на комментарии