Очень спорная статья.
С одной стороны, прекрасно понимаю всеобщую усталость от теоретических вопросов, которые никакого отношения к происходящему на проекте не имеют. С другой, уверены, что хотите взять на работу человека, который не может внятно объяснить, чем LinkedList отличается от ArrayList?
Считаю, что выявлять реальный технический бэкграунд кандидата какими-то другими методами, кроме тех собеседования – ненадежно и некорректно. Разумеется, собеседование не должно состоять только из теорвопросов, все же это собеседование, а не экзамен. Но именно такие вопросы поставят всех кандидатов в равное положение. А вот с теми, кто на них ответил, можно уже и про опыт на прошлых проектах поговорить, и бизнес-задачи им предложить на декомпозицию.
С одной стороны, прекрасно понимаю всеобщую усталость от теоретических вопросов, которые никакого отношения к происходящему на проекте не имеют. С другой, уверены, что хотите взять на работу человека, который не может внятно объяснить, чем LinkedList отличается от ArrayList?
Считаю, что выявлять реальный технический бэкграунд кандидата какими-то другими методами, кроме тех собеседования – ненадежно и некорректно. Разумеется, собеседование не должно состоять только из теорвопросов, все же это собеседование, а не экзамен. Но именно такие вопросы поставят всех кандидатов в равное положение. А вот с теми, кто на них ответил, можно уже и про опыт на прошлых проектах поговорить, и бизнес-задачи им предложить на декомпозицию.
Хабр
Почему технические собеседования не нужны
Ремарка - речь пойдет о 98% собеседований в постсоветском пространстве на позицию Java Developer. Начну вот с чего: знание Collections Framework, его иерархии наследования, внутренней работы...
Выше уже писал об этом, но повторюсь: не бывает бесполезных базовых знаний. Те, кто кричит, что алгоритмы им не нужны, обычно не используют на максимум эффективности даже язык, на котором пишут каждый день, не то что какие-то другие доступные инструменты. Без алгоритмического анализа не получится решать по-настоящему сложные интересные задачи и прокачивать свой скил.
Поэтому в свое время я был очень рад, когда обнаружил запись курса по книге Кормена “Алгоритмы: построение и анализ”: информация усваивалась куда легче. Один из лекторов – Чарльз Лейзерстон, соавтор Кормена, так что объяснение буквально из первых рук.
Первую лекцию стоит посмотреть, чтобы понять, зайдет ли вам такой формат. Полный курс со всеми материалами есть на сайте открытых курсов MIT.
Поэтому в свое время я был очень рад, когда обнаружил запись курса по книге Кормена “Алгоритмы: построение и анализ”: информация усваивалась куда легче. Один из лекторов – Чарльз Лейзерстон, соавтор Кормена, так что объяснение буквально из первых рук.
Первую лекцию стоит посмотреть, чтобы понять, зайдет ли вам такой формат. Полный курс со всеми материалами есть на сайте открытых курсов MIT.
Держите задачку.
В программе определены класс Shape и его наследник класс Circle:
1 class Shape {
2 double square;
3 Shape(double r){
4 square = 3.14 * r* r;
5 }
6 }
7 class Circle extends Shape {
8 double r;
9 Circle (double rad) {
10 r = rad;
11 super(rad);
12 }
13 }
Выполнение программы завершилось ошибкой.
В программе определены класс Shape и его наследник класс Circle:
1 class Shape {
2 double square;
3 Shape(double r){
4 square = 3.14 * r* r;
5 }
6 }
7 class Circle extends Shape {
8 double r;
9 Circle (double rad) {
10 r = rad;
11 super(rad);
12 }
13 }
Выполнение программы завершилось ошибкой.
Какие изменения необходимо включить в текст программы, чтобы исключить ошибку?
Anonymous Quiz
8%
добавить в описание класса Circle описание конструктора без параметров
64%
изменить очередность следования строк 10 и 11
8%
изменить имя переменной в строке 3 на отличное от r и rad
13%
заменить ключевое слово super в строке 11 на Shape
8%
добавить в описание класса Shape описание конструктора без параметров
GitHub рассказали, что почти треть нового кода на платформе написана с помощью сервиса на базе искусственного интеллекта Copilot.
В комментариях к новости кто-то уже успел похоронить профессию программиста. Забавно, но рановато. Да и сам инструмент пока скорее для фана, чем для реальной пользы – лучше самому написать, чем потом переписывать 40% кода нейросети. Для новичков тоже польза сомнительная, особенно для тех, у кого еще база в голове окончательно не сложилась.
Посмотрим, как все будет развиваться дальше.
В комментариях к новости кто-то уже успел похоронить профессию программиста. Забавно, но рановато. Да и сам инструмент пока скорее для фана, чем для реальной пользы – лучше самому написать, чем потом переписывать 40% кода нейросети. Для новичков тоже польза сомнительная, особенно для тех, у кого еще база в голове окончательно не сложилась.
Посмотрим, как все будет развиваться дальше.
vc.ru
GitHub рассказала, что почти треть нового кода на платформе написана с помощью ИИ-сервиса Copilot — Разработка на vc.ru
А половина разработчиков продолжила использовать Copilot после пробного периода.
Опубликовали обзор проходившей 25-28 октября конференции для Java-разработчиков Joker 2021.
Есть довольно интересные доклады, вот эти два сохранил себе для ознакомления:
🔺Java-объекты наизнанку
🔺Выходя за рамки контейнера — компактные и быстрые контейнеры с нативным образом (и без)
А открыли конференцию докладом Самопишущийся код, я как раз недавно писал о том, эффективно ли писать код с помощью Copilot и нейросетей вообще.
Считаю, полезно будет изучить.
Есть довольно интересные доклады, вот эти два сохранил себе для ознакомления:
🔺Java-объекты наизнанку
🔺Выходя за рамки контейнера — компактные и быстрые контейнеры с нативным образом (и без)
А открыли конференцию докладом Самопишущийся код, я как раз недавно писал о том, эффективно ли писать код с помощью Copilot и нейросетей вообще.
Считаю, полезно будет изучить.
Хабр
Joker 2021: прошедшая Java-конференция и общая статистика
Закончилась конференция для Java-разработчиков Joker 2021 , проходившая с 25 по 28 октября 2021 года. Мероприятие стало четвёртым из девяти конференций, проводимых в этом году компанией JUG Ru Group в...
Heaton-Introduction to Neural Networks with Java.pdf
3.5 MB
Подойдет даже совсем новичкам: примеры кода тут простые, их легко разбирать (иногда в процессе даже становится скучно). Но от книги со словом Introduction в названии ничего суперсерьезного ждать и не надо. Кратко изложена теория, много практики – для знакомства с нейросетями вполне годится.
В программе приведено следующее описание класса Perimetr:
abstract class Perimetr {
double perimetr;
abstract public void setPerimetr(double p);
}
abstract class Perimetr {
double perimetr;
abstract public void setPerimetr(double p);
}
Какие нижеперечисленные фрагменты кода допустимы?
Anonymous Quiz
8%
Perimetr sh = new Perimetr; sh.setPerimetr(55.2);
46%
class Triangle extends Perimetr { public void setPerimetr(double p) { this.perimetr = p; } }
8%
class Circle extends Perimetr { double rad; final float PI = 3.14; }
8%
class Triangle extends Perimetr { void setPerimetr(double p) { this.perimetr = s; } }
31%
класс Perimetr описан неверно. программа завершится ошибкой
Появился отличный перевод статьи Pierre-Yves Saumont про абстракции в ФП и ООП. Задача для примера выбрана не слишком близкая к реальности, зато все расписано предельно понятно.
Полезно прочитать, если хотите:
🔹сравнить практики в ООП и ФП
🔹понять, почему доведение абстракции до предела бывает полезно и в ООП
🔹пофилософствовать на тему: «является ли преждевременная абстракция/оптимизация злом?»
Люблю, когда материал заставляет сместить фокус внимания с привычных методов решения задач – это помогает держать себя в форме.
Кому интересно, оригинал можно почитать здесь.
Полезно прочитать, если хотите:
🔹сравнить практики в ООП и ФП
🔹понять, почему доведение абстракции до предела бывает полезно и в ООП
🔹пофилософствовать на тему: «является ли преждевременная абстракция/оптимизация злом?»
Люблю, когда материал заставляет сместить фокус внимания с привычных методов решения задач – это помогает держать себя в форме.
Кому интересно, оригинал можно почитать здесь.
Хабр
Уроки абстракции: чему FP может научить ООП
Абстракция - один из величайших инструментов воображения, когда-либо изобретенных людьми для представления, расшифровки и изображения мира. - Джерри Зальц Я хочу приблизиться к истине настолько...
Pierre-Yves Saumont, Functional Programming in Java
Раз уж на днях публиковал ссылку на статью Pierre-Yves Saumont, надо вспомнить и его книгу.
Раз уж на днях публиковал ссылку на статью Pierre-Yves Saumont, надо вспомнить и его книгу.
Pierre_Yves_Saumont_Functional_Programming_in_Java_How_functional.pdf
6.4 MB
Из плюсов:
✅ глубокое и подробное погружение в тему. После прочтения можно смело браться за Haskell, F# – что захотите, база у вас уже будет;
✅ в процессе реально понимаешь, как сделать свой код более читабельным, думая функционально.
Из минусов:
❓решения некоторых задач откровенно странные. Да, автор демонстрирует принципы ФП в ООП-языке, но местами эффективность от этого страдает, а не повышается.
✅ глубокое и подробное погружение в тему. После прочтения можно смело браться за Haskell, F# – что захотите, база у вас уже будет;
✅ в процессе реально понимаешь, как сделать свой код более читабельным, думая функционально.
Из минусов:
❓решения некоторых задач откровенно странные. Да, автор демонстрирует принципы ФП в ООП-языке, но местами эффективность от этого страдает, а не повышается.
В программе приведено следующее описание:
1 class A {
2 int a;
3 int b;
4 }
5 class B extends A{
6 int b;
7 ...
8 }
1 class A {
2 int a;
3 int b;
4 }
5 class B extends A{
6 int b;
7 ...
8 }
Каким кодом необходимо дополнить описание конструктора класса B, наследующего класс A, чтобы при создании объекта класса B переменные класса A принимали значение 1?
Anonymous Quiz
7%
a.A = b.A = 1;
60%
super.a=1; super.b = 1;
16%
A.a = 1; A.b = 1;
4%
sup.a = 1; sup.b = 1;
13%
a.super() = 1; b.super() = 1;
Не каждый программист захочет разбираться в том, как устроена процедура вывода типов выражений. Но я считаю, что попробовать нужно – чтобы лучше понимать поведение компилятора. А еще потому, что от привычки анализировать напрямую зависит наш профессиональный навык.
Как раз недавно нашел статью про вывод типов.
Ожидал, что читать будет сложно, но написано доступно, все по полочкам – четко обозначены нужные нам контексты для поли-выражений, даны ссылки на соответствующие главы спецификации.
Будет полезно ознакомиться, даже если вы не планируете углубляться в детали.
Как раз недавно нашел статью про вывод типов.
Ожидал, что читать будет сложно, но написано доступно, все по полочкам – четко обозначены нужные нам контексты для поли-выражений, даны ссылки на соответствующие главы спецификации.
Будет полезно ознакомиться, даже если вы не планируете углубляться в детали.
ods-java-pat-morin.pdf
1.4 MB
Книга позиционируется как введение в структуры данных, но на деле не так проста.
Читайте, если вы:
✅ уже знакомы с базой по структурам данных (с работами Лафоре, например);
✅ хотите подробнее углубиться в тему или освежить знания;
✅ любите максимально подробные (местами даже душные) разборы примеров.
Вам не подойдет, если:
⛔️ только начинаете изучать вопрос. Для этого можно познакомиться с Лафоре, на канале я делился книгой, пару курсов тоже рекомендовал).
Читайте, если вы:
✅ уже знакомы с базой по структурам данных (с работами Лафоре, например);
✅ хотите подробнее углубиться в тему или освежить знания;
✅ любите максимально подробные (местами даже душные) разборы примеров.
Вам не подойдет, если:
⛔️ только начинаете изучать вопрос. Для этого можно познакомиться с Лафоре, на канале я делился книгой, пару курсов тоже рекомендовал).