формат интересный и актуальный. Но все-таки хотелось бы какую то обратную связь: правильно или неправильно отвечает кандидат, свои дополнения какие то к ответам , и, конечно, какое то резюме по итогу )
Пишу на флатере 5 лет. Вопросы ради вопросов. в 99% это вообще не используется, как работаю эти деревья, как оно работает под капотом. Вопросы высосанные из пальца. Пример сдаёшь на права - ты не обязан знать как работает двигатель в машине, ты должен уметь им управлять. Сеньоры-помидоры берут техническую документацию фраемворка и задают по ней вопросы, хотя настоящие вопросы из жизни придумывать вообще не хотят
99.99% всех собеседований - это переливание из пустого в порожний, с уклоном в синдром вахтерши у интервьюера, по заученной на зубок теории. А потом таких "успешных" кандидатов в реальной работе смотришь и плакать хочется 😂
Начали прямо на серьёзных щщах тереть за паттерны проектирования - думаю ну ни хера себе уровень - а потом кандидат взял да присел на несложной задачке, заблудившись в трёх соснах, и потом давай плавать в простых вопросах по Dart
На сколько я понял что интерфейс не может отобразить состояние класса а только описывает его поведение, а абстрация может нести в себе конкретное состояние конкретного класса.
Уже на 20-й минуте создалось стойкое впечатление, что кандидат лучше шарит, чем интервьюер. Более того, сам инетрвьер не всегда понимает, что ему вообще отвечают. А на 59-й минуте уже начал "а под скринридером ты что имеешь ввиду?" - ну мог бы тогда уж сразу топить салагу - "а под деревом, ты что?... а под виджетом, ты что?.." Ну такое...
Примерно такая идея реализации задачи void main() { final List list = [1,1,3,7,7,3,2,9,2,5,5]; int i = 0; int result = 0; while (list.length > i) { int j = 0; int b = 0; while (list.length > j) { if (list[i] == list[j]) { b = b + 1; } j++; } if (b < 2) { result = list[i]; } i++; } print(result); }
Можно сетом воспользоваться. Там метод .add возвращает булевое значение, если элемент в сете уже есть. Так что удаляй если он уже есть и у тебя в итоге будет сет, с единственным значением которое ты выведешь как ответ. Все за 1 проход и ниче не надо городить
@@karaoket8911 менять размерность коллекции в цикле - красный флаг. Когда немного элементов ещё не так страшно, но когда много.. перестроения в памяти хорошую такую просидку дают. Хоть и номинально у вас О(n).
формат интересный и актуальный.
Но все-таки хотелось бы какую то обратную связь: правильно или неправильно отвечает кандидат, свои дополнения какие то к ответам , и, конечно, какое то резюме по итогу )
Пишу на флатере 5 лет. Вопросы ради вопросов. в 99% это вообще не используется, как работаю эти деревья, как оно работает под капотом. Вопросы высосанные из пальца. Пример сдаёшь на права - ты не обязан знать как работает двигатель в машине, ты должен уметь им управлять. Сеньоры-помидоры берут техническую документацию фраемворка и задают по ней вопросы, хотя настоящие вопросы из жизни придумывать вообще не хотят
99.99% всех собеседований - это переливание из пустого в порожний, с уклоном в синдром вахтерши у интервьюера, по заученной на зубок теории. А потом таких "успешных" кандидатов в реальной работе смотришь и плакать хочется 😂
действительно, теряется смысл формата собеседования, если нет реакции верно-невенро-дополнить. на худой конец, сказать это все по итогу собеседования.
Пожалуйста, больше таких видео :)
Начали прямо на серьёзных щщах тереть за паттерны проектирования - думаю ну ни хера себе уровень - а потом кандидат взял да присел на несложной задачке, заблудившись в трёх соснах, и потом давай плавать в простых вопросах по Dart
Ну это реально очень странно без фидбека. Смысл смотреть тогда?
На сколько я понял что интерфейс не может отобразить состояние класса а только описывает его поведение, а абстрация может нести в себе конкретное состояние конкретного класса.
Это абстрактный класс, а не абстракция. Абстракция это выделение важных деталей системы.
Уже на 20-й минуте создалось стойкое впечатление, что кандидат лучше шарит, чем интервьюер. Более того, сам инетрвьер не всегда понимает, что ему вообще отвечают. А на 59-й минуте уже начал "а под скринридером ты что имеешь ввиду?" - ну мог бы тогда уж сразу топить салагу - "а под деревом, ты что?... а под виджетом, ты что?.." Ну такое...
Добрый день. Собеседование обычно проводят по уровням. Как узнать на какой уровень? Иначе пропадает ясность.
на мидла
Middle, ближе к 14-й минуте об этом сказано
Примерно такая идея реализации задачи
void main() {
final List list = [1,1,3,7,7,3,2,9,2,5,5];
int i = 0;
int result = 0;
while (list.length > i) {
int j = 0;
int b = 0;
while (list.length > j) {
if (list[i] == list[j]) {
b = b + 1;
}
j++;
}
if (b < 2) {
result = list[i];
}
i++;
}
print(result);
}
O(n^2) 💀
очень волнуется...
Абстракция позволяет нам думать широко и элегантно 😂😂😂 чувак не подготовлен - мы таких «ага-угу», «вот» и «да, конечно» на ставку е берём
Спасибо за видео.
По решению задачи на ум пришло два решения:
Рекурсия:
List findSingleValue(List list) {
final firstElement = list.first;
list.removeAt(0);
if (list.contains(firstElement)) {
list.removeWhere((currentElement) => currentElement == firstElement);
return findSingleValue(list);
} else {
return [firstElement];
}
}
void main() {
final list = [1, 1, 2, 2, 3, 3, 5, 5, 7, 9, 9];
final singleValue = findSingleValue(list);
print(singleValue.first); // 7
}
Set:
void main() {
final list = [1, 1, 2, 2, 3, 3, 5, 5, 7, 9, 9];
final uniqueValue = {};
list.forEach((element) {
uniqueValue.contains(element) ? uniqueValue.remove(element) : uniqueValue.add(element);
});
print(uniqueValue.first); // 7
}
У кого-нибудь есть более элегантные решения?
.toSet();
void main() {
print(findOneEntry([1, 2, 1, 2, 6, 3, 4, 3, 4]));
}
int findOneEntry(List nums) {
int unique = 0;
for (var i in nums) {
unique = unique ^ i;
}
return unique;
}
xor делает свое красиво)
Можно сетом воспользоваться. Там метод .add возвращает булевое значение, если элемент в сете уже есть. Так что удаляй если он уже есть и у тебя в итоге будет сет, с единственным значением которое ты выведешь как ответ. Все за 1 проход и ниче не надо городить
@@karaoket8911 менять размерность коллекции в цикле - красный флаг. Когда немного элементов ещё не так страшно, но когда много.. перестроения в памяти хорошую такую просидку дают. Хоть и номинально у вас О(n).
final list = [1, 1, 2, 2, 4, 3, 3, 4];
final resultMap = list.fold({}, (result, item) {
result.containsKey(item) ? result[item]++ : result[item] = 1;
return result;
});
print(resultMap.entries.singleWhereOrNull((e) => e.value == 1)?.key);