Добрый день, @maks.gavrilov. Спасибо большое, что обратили внимание на недосказанность, да вы правы, класс хранится в heap, как и все его поля и методы, давайте я попробую объяснить, что я имела ввиду: Рассмотрим как поля класса и объекты хранятся в стеке и куче: 1 Создание фрейма в стеке: Каждый раз, когда вызывается метод, для него создаётся новый фрейм в стеке. Этот фрейм содержит локальные переменные метода, включая параметры. Локальные переменные метода (включая примитивные типы) хранятся в стеке. Фрейм удаляется после завершения метода, освобождая память. 2 Передача ссылок на объекты: Если метод принимает в качестве параметра объект, в стеке сохраняется ссылка на этот объект, а сам объект находится в куче. Примитивные типы передаются по значению и хранятся непосредственно в стеке, а объекты передаются по ссылке, которая указывает на расположение объекта в куче. 3 Доступ к полям объекта: Когда метод работает с полями объекта (например, доступ к полям класса), JVM использует ссылку на объект, которая хранится в стеке. Однако сами поля объекта хранятся в куче, так как объект создаётся в куче. Методы работают через ссылку, которая указывает на этот объект в куче. 4 Обработка локальных переменных: Локальные переменные метода всегда хранятся в стеке. Когда метод завершает выполнение, фрейм стека удаляется, и память для этих локальных переменных освобождается. Таким образом, можно сказать, что поля объекта не переносятся в стек при вызове метода. В стеке сохраняются только ссылки на объекты (если метод принимает объект), а сами поля остаются в куче, где хранится объект.
Некторые вопросы действительно были сформулированны достаточно расплывчито. 28:00 - "Можешь сказать как общаются 2 микросервиса и что происходит в случае потери ответа?". Очень абстрактный вопрос.
возможно не уложились в тайминг, начали нервничать перед камерой и путаться, но хотелось бы обратить внимание на формулировку вопроса и скорость с которой было озвучено условие: есть кафка и 5 партиций, есть одна консюмер группа, 5 косюмер групп и 10, внутри одной группы. если у нас есть один топик с 5 партициями и 10 консюмеров в группе, то как они будут читать эти топики? верю, что записано вживую, за смелость уважуха обоим.
Алгоритмическая задачка на подсчёт слов работать не будет, т.к. inWord не меняется. Когда в режиме online, видимо главное чтобы человек озвучил основные моменты алгоритма. Когда счётчик увеличивается ? Предположим когда начинается новое слово. Новое слово начинается когда у нас очередной символ равен букве и до этого были вне слова (c(i) = symbol && inWord==false). Граничные условия - пустая и нудевая сторчка...
Че блин? Где поля класса хранятся?? В стеке?? Чего? Ммм... ведущий разработчик.. понятно.. бедного парня только запутали, он теперь так и запомнит. Досвидания) хотела подготовиться к собесам, но не по вашим видео, видимо. Хотя, тут и собеседующийся слабенький, вопросы простые слишком. Странно, вроде, на мидла, но кандидат слабенький
Намного проще можно решить public class CountWords { public int countWords(String str) { if (str == null || str.isEmpty() || str.isBlank()) { return 0; } int count = 0; for (int i = 1; i < str.length(); i++) { char prev = str.charAt(i - 1); char next = str.charAt(i); if ((Character.isLetter(prev) || prev == '-') && !Character.isLetter(next)) { count++; } } return count; } }
Поля класса хранятся там же в хипе, как и сам экземпляр класса, но никак не в стеке. Привет Марии, ведущему java-разработчику команды МТС аналитики.
Добрый день, @maks.gavrilov. Спасибо большое, что обратили внимание на недосказанность, да вы правы, класс хранится в heap, как и все его поля и методы, давайте я попробую объяснить, что я имела ввиду:
Рассмотрим как поля класса и объекты хранятся в стеке и куче:
1 Создание фрейма в стеке:
Каждый раз, когда вызывается метод, для него создаётся новый фрейм в стеке. Этот фрейм содержит локальные переменные метода, включая параметры. Локальные переменные метода (включая примитивные типы) хранятся в стеке. Фрейм удаляется после завершения метода, освобождая память.
2 Передача ссылок на объекты:
Если метод принимает в качестве параметра объект, в стеке сохраняется ссылка на этот объект, а сам объект находится в куче. Примитивные типы передаются по значению и хранятся непосредственно в стеке, а объекты передаются по ссылке, которая указывает на расположение объекта в куче.
3 Доступ к полям объекта:
Когда метод работает с полями объекта (например, доступ к полям класса), JVM использует ссылку на объект, которая хранится в стеке. Однако сами поля объекта хранятся в куче, так как объект создаётся в куче. Методы работают через ссылку, которая указывает на этот объект в куче.
4 Обработка локальных переменных:
Локальные переменные метода всегда хранятся в стеке. Когда метод завершает выполнение, фрейм стека удаляется, и память для этих локальных переменных освобождается.
Таким образом, можно сказать, что поля объекта не переносятся в стек при вызове метода. В стеке сохраняются только ссылки на объекты (если метод принимает объект), а сами поля остаются в куче, где хранится объект.
String ссылочный тип данных, в каком стеке мадам ?) Согласен с @hazardeth, все поля класса находятся в куче.
А чем stringа не ссылочный тип? String передает свое значение ни как объект, а как ссылка на объект.
Некторые вопросы действительно были сформулированны достаточно расплывчито.
28:00 - "Можешь сказать как общаются 2 микросервиса и что происходит в случае потери ответа?". Очень абстрактный вопрос.
Да не, норм
01:08:04 - Как подготовиться к собеседованию по System Design? Как я понял, это Алекс Сюй - System Design. Подготовка к сложному интервью.
возможно не уложились в тайминг, начали нервничать перед камерой и путаться, но хотелось бы обратить внимание на формулировку вопроса и скорость с которой было озвучено условие:
есть кафка и 5 партиций, есть одна консюмер группа, 5 косюмер групп и 10, внутри одной группы.
если у нас есть один топик с 5 партициями и 10 консюмеров в группе, то как они будут читать эти топики?
верю, что записано вживую, за смелость уважуха обоим.
лучше бы на англ вопрос задавали, на русском крипово звучит
Интервьювер очень не очень.
Алгоритмическая задачка на подсчёт слов работать не будет, т.к. inWord не меняется. Когда в режиме online, видимо главное чтобы человек озвучил основные моменты алгоритма. Когда счётчик увеличивается ? Предположим когда начинается новое слово. Новое слово начинается когда у нас очередной символ равен букве и до этого были вне слова (c(i) = symbol && inWord==false). Граничные условия - пустая и нудевая сторчка...
выражаю протест против комментариев девушки во время задач. Дайте кандидату самому написать код, а потом ревьюйте его
Че блин? Где поля класса хранятся?? В стеке?? Чего?
Ммм... ведущий разработчик.. понятно.. бедного парня только запутали, он теперь так и запомнит.
Досвидания) хотела подготовиться к собесам, но не по вашим видео, видимо. Хотя, тут и собеседующийся слабенький, вопросы простые слишком. Странно, вроде, на мидла, но кандидат слабенький
Намного проще можно решить
public class CountWords {
public int countWords(String str) {
if (str == null || str.isEmpty() || str.isBlank()) {
return 0;
}
int count = 0;
for (int i = 1; i < str.length(); i++) {
char prev = str.charAt(i - 1);
char next = str.charAt(i);
if ((Character.isLetter(prev) || prev == '-') && !Character.isLetter(next)) {
count++;
}
}
return count;
}
}
а если дефис не соприкасается со словом. И потом последнее слово не подсчитывается, если после него нет пробелов.
@@rusm4767если дефис не соприкасается со словом, то это - тире. Русский язык, как бы
У вас будут НЕ российские компании и интервью на английском? P.S. Видео промотал, чуть не заснул, молчат, мычат, долго "рожают".
".. функциональный интерфейс это какой-то абстрактный метод .." это конечно не вполне так
Вы шо угараете) На абстрактные классы разделить и не надо городить, второй варик чрез рефлексию в методах давать инфу.
Ну и гонора у интервьювера
Марія жжот.
Вона хоч вище джуна?
Тут би ООП підтягнути і зрозуміти, що раз Інтерн наслідується від Емплоєра то він має доступ до не приватних методів.
Как можно так по-хамски общаться на собеседовании? И зачем во время решения задач без конца вмешиваться, не давая человеку подумать?
Отревьюйте код кому не сложно, пожалуйста (это к первой задаче)
static int countWords(String str) {
if (str == null || str.isEmpty()) return 0;
Set set = new HashSet(
List.of(' ', ',', '.', '!', '?')
);
int count = 0;
boolean isWord = !(str.charAt(0) == ' ');
for (int i = 0; i < str.length(); i++) {
if (!set.contains(str.charAt(i)) && isWord) {
isWord = false;
count++;
} else if (set.contains(str.charAt(i)) && !isWord) {
isWord = true;
}
}
return count;
}
Как минимум, считает цифры и пропустит любой символ, кроме тех, что в хешсете