55+ в ИТ

User avatar
Nostradamus
Уже с Приветом
Posts: 5398
Joined: 30 Apr 2000 09:01
Location: Из будущего

Re: 55+ в ИТ

Post by Nostradamus » 08 Oct 2018 03:52

Физик-Лирик wrote:
08 Oct 2018 03:32
Nostradamus wrote:
08 Oct 2018 03:21
Видимо это зависит от специальности? Я последние 25 лет работаю именно по той специальности которой меня учили и по которой защищался, и из-за нее можно сказать переехал в Штаты ибо в России она практически сошла на нет.
А что за специальность такая?
Если коротко - специализированный софт для дизайна чипов (то что в Союзе называлось САПР в микроэлектронике):
https://en.wikipedia.org/wiki/Electroni ... automation
Вот вам успокаивающее. А вот - патроны к нему.

User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: 55+ в ИТ

Post by АццкоМото » 08 Oct 2018 15:10

mikeG wrote:
07 Oct 2018 20:36
Форму для браузера или скрипт убрать-добавить юзера, конечно, можно и так написать. На многих позициях этого достаточно.
да пес его знает, на самом-то деле. я работал и на низком достаточно уровне (ядро ОС, драйверы, бутлоадер), так и на самом высоком, вот этом презираемом всеми "набросал кнопочек на формочку". и не вижу принципиальной разницы. можно годами работать над типа "престижным" видом софта, типа ядра ОС, и писать в основном что-то типа "получил байтик, проверил 5й бит и вернул true/false". Утрировано, конечно. А можно на фронтэнде заморочиться чем-то более сложным. Да тупо - текстовое поле, которое выдает подсказки по мере того, как пользователь печатает. Не рокет сайенс, но в зависимости от специфики могут быть нетривиальные ходы. И те же деревья, бгугога.

Вообще КМК, возвращаясь к обходу деревьев, проблема совсем в другом. Знать структуры данных и базовые алгоритмы - недостаточно. Нужно их применять правильно и предсказуемо. Вот у нас есть чел старенький, думаю, лет 60. Он бодряк ого-го и код, вполне рабочий, пишет просто на ходу стирая шины. Побольше чем я раза в 2-3. Но если нужно проверить, условно, есть ли айтем в корзине, то код будет примерно такой:

Code: Select all

boolean isItemInCart(Item item) {
   for (int i=0; i<cart.size(); i++) {
   	if (cart.getItem(i).getId() == item.getId() {
   		return true;
   	}
   	return false;
   }
}
И, сцукко, это попаболь. Он обойдет дерево на интервью, расскажет про кучу алгориитмов, про какие-нибудь серо-буро-зеленые деревья. А вот в продакшн будет срать вот это УГ.

Как такое проверить на интервью? Я пока не знаю.
Мат на форуме запрещен, блдж!

adda_
Уже с Приветом
Posts: 10708
Joined: 22 Jul 2006 20:19

Re: 55+ в ИТ

Post by adda_ » 08 Oct 2018 18:20

Я не понял, там похоже ошибка в логике.
Должно быть
boolean isItemInCart(Item item) {
for (int i=0; i<cart.size(); i++) {
if (cart.getItem(i).getId() == item.getId() {
return true;
}
}
return false;
}

User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: 55+ в ИТ

Post by АццкоМото » 08 Oct 2018 18:36

adda_ wrote:
08 Oct 2018 18:20
Я не понял, там похоже ошибка в логике.
Должно быть
boolean isItemInCart(Item item) {
for (int i=0; i<cart.size(); i++) {
if (cart.getItem(i).getId() == item.getId() {
return true;
}
}
return false;
}
Да, return false не на месте. Издержки написания спросоня и без ide

Но смысл, надеюсь, понятен.
Мат на форуме запрещен, блдж!

alexan1
Новичок
Posts: 57
Joined: 11 Oct 2015 17:03

Re: 55+ в ИТ

Post by alexan1 » 08 Oct 2018 19:01

АццкоМото wrote:
08 Oct 2018 18:36
adda_ wrote:
08 Oct 2018 18:20
Я не понял, там похоже ошибка в логике.
Должно быть
boolean isItemInCart(Item item) {
for (int i=0; i<cart.size(); i++) {
if (cart.getItem(i).getId() == item.getId() {
return true;
}
}
return false;
}
Да, return false не на месте. Издержки написания спросоня и без ide

Но смысл, надеюсь, понятен.
а как надо?

User avatar
Alexander Troyansky
Уже с Приветом
Posts: 4505
Joined: 15 Aug 2008 00:52

Re: 55+ в ИТ

Post by Alexander Troyansky » 08 Oct 2018 19:34

alexan1 wrote:
08 Oct 2018 19:01
АццкоМото wrote:
08 Oct 2018 18:36
adda_ wrote:
08 Oct 2018 18:20
Я не понял, там похоже ошибка в логике.
Должно быть
boolean isItemInCart(Item item) {
for (int i=0; i<cart.size(); i++) {
if (cart.getItem(i).getId() == item.getId() {
return true;
}
}
return false;
}
Да, return false не на месте. Издержки написания спросоня и без ide

Но смысл, надеюсь, понятен.
а как надо?
Ну не знаю... как-то муторно становится от необходимости перебора, да ещё и колбасой из геттеров-шметтеров для Id. Неужто какого-нить мэпа нету с доступом по этому полю?
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life

User avatar
valchkou
Уже с Приветом
Posts: 3230
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: 55+ в ИТ

Post by valchkou » 08 Oct 2018 19:38

АццкоМото wrote:
08 Oct 2018 15:10
Вообще КМК, возвращаясь к обходу деревьев, проблема совсем в другом. Знать структуры данных и базовые алгоритмы - недостаточно. Нужно их применять правильно и предсказуемо. Вот у нас есть чел старенький, думаю, лет 60. Он бодряк ого-го и код, вполне рабочий, пишет просто на ходу стирая шины. Побольше чем я раза в 2-3. Но если нужно проверить, условно, есть ли айтем в корзине, то код будет примерно такой:

Code: Select all

boolean isItemInCart(Item item) {
   for (int i=0; i<cart.size(); i++) {
   	if (cart.getItem(i).getId() == item.getId() {
   		return true;
   	}
   	return false;
   }
}
И, сцукко, это попаболь. Он обойдет дерево на интервью, расскажет про кучу алгориитмов, про какие-нибудь серо-буро-зеленые деревья. А вот в продакшн будет срать вот это УГ.

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

Мой ответ это юниттесты. Да это не дает даже 90% защиты от дурака. Но хотябы вынуждает его думать хоть немного и самому ковырятся почему его код не работает.
Не без доли хвастовства хочу отметить что мои проекты довольно стабильны на продакшн, что даже отмечено руководством, но весь секрет в моих тест сценариях.
Я не жалею времени на создание под-задач и расписывание юниттест сценарии под них. И пока я не увижу что мои сценарии покрыты я даже не пытаюсь понять что происходит в алгоритме.

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

User avatar
Nostradamus
Уже с Приветом
Posts: 5398
Joined: 30 Apr 2000 09:01
Location: Из будущего

Re: 55+ в ИТ

Post by Nostradamus » 08 Oct 2018 19:39

Мне почему-то тоже сразу бросился в глаза линейный поиск, а не возвращаемое значение.
Вот вам успокаивающее. А вот - патроны к нему.

User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 10299
Joined: 27 Sep 2007 22:53

Re: 55+ в ИТ

Post by Мальчик-Одуванчик » 08 Oct 2018 20:04

mikeG wrote:
07 Oct 2018 04:09
Задача обойти дерево ввела его в ступор.
Ну вот честно, традиционные алгоритмические задачки мне уже лет десять как в работе не попадались.
Ну и долбаные деревья тоже. Разве что трюки как применить тот или иной стандартный алноритм с большей эффективностью.
Разумеется перед интервью всё это гавно придется ворошить заново, зная что будут спрашивать нечто подобное.
И с большлй вероятностью спрашивающий про обход этих деревьев тоже имеет с ними не больше практики.

User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 10299
Joined: 27 Sep 2007 22:53

Re: 55+ в ИТ

Post by Мальчик-Одуванчик » 08 Oct 2018 20:12

АццкоМото wrote:
07 Oct 2018 18:59
Положим, обойти дерево — это обычный санити чек. Он может быть несколько оскорбительным, но сделать такую задачу должен быть в состоянии любой погромист, даже если он за 20 лет работы ни разу с деревьями не работал.
Да ну. Полно уже формоклепателей которые сталкивались с подобным может быть только в вузе.
Хотя не удивлюсь, если большая часть формоклепателей и в вузе не училась.

alex_127
Уже с Приветом
Posts: 1885
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Re: 55+ в ИТ

Post by alex_127 » 08 Oct 2018 20:48

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

alex_127
Уже с Приветом
Posts: 1885
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Re: 55+ в ИТ

Post by alex_127 » 08 Oct 2018 20:50


User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: 55+ в ИТ

Post by АццкоМото » 08 Oct 2018 21:04

alexan1 wrote:
08 Oct 2018 19:01
АццкоМото wrote:
08 Oct 2018 18:36
adda_ wrote:
08 Oct 2018 18:20
Я не понял, там похоже ошибка в логике.
Должно быть
boolean isItemInCart(Item item) {
for (int i=0; i<cart.size(); i++) {
if (cart.getItem(i).getId() == item.getId() {
return true;
}
}
return false;
}
Да, return false не на месте. Издержки написания спросоня и без ide

Но смысл, надеюсь, понятен.
а как надо?
ну там HashMap например. всякие RxJava делают то же самое куда элегантнее или там java streams. два последних подхода могут быть спорными, но тупой перебор да еще итакой многословный...
Мат на форуме запрещен, блдж!

User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: 55+ в ИТ

Post by АццкоМото » 08 Oct 2018 21:07

valchkou wrote:
08 Oct 2018 19:38
АццкоМото wrote:
08 Oct 2018 15:10
Вообще КМК, возвращаясь к обходу деревьев, проблема совсем в другом. Знать структуры данных и базовые алгоритмы - недостаточно. Нужно их применять правильно и предсказуемо. Вот у нас есть чел старенький, думаю, лет 60. Он бодряк ого-го и код, вполне рабочий, пишет просто на ходу стирая шины. Побольше чем я раза в 2-3. Но если нужно проверить, условно, есть ли айтем в корзине, то код будет примерно такой:

Code: Select all

boolean isItemInCart(Item item) {
   for (int i=0; i<cart.size(); i++) {
   	if (cart.getItem(i).getId() == item.getId() {
   		return true;
   	}
   	return false;
   }
}
И, сцукко, это попаболь. Он обойдет дерево на интервью, расскажет про кучу алгориитмов, про какие-нибудь серо-буро-зеленые деревья. А вот в продакшн будет срать вот это УГ.

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

Мой ответ это юниттесты. Да это не дает даже 90% защиты от дурака. Но хотябы вынуждает его думать хоть немного и самому ковырятся почему его код не работает.
Не без доли хвастовства хочу отметить что мои проекты довольно стабильны на продакшн, что даже отмечено руководством, но весь секрет в моих тест сценариях.
Я не жалею времени на создание под-задач и расписывание юниттест сценарии под них. И пока я не увижу что мои сценарии покрыты я даже не пытаюсь понять что происходит в алгоритме.

но я только рад, благодаря вот таким "специалистам" нанимают меня контролировать конвейер и как я считаю даже переплачивают по рынку.
Ну, тут конфьюжн. То, что return false; не на месте - это мой факап, не того чувака. Еще раз: код он пишет вполне рабочий, багов производит не больше других.

Речь шла про использование тупого перебора в цикле, ровно как делали при Иване Грозном
Мат на форуме запрещен, блдж!

adda_
Уже с Приветом
Posts: 10708
Joined: 22 Jul 2006 20:19

Re: 55+ в ИТ

Post by adda_ » 08 Oct 2018 21:14

АццкоМото wrote:
08 Oct 2018 21:04
ну там HashMap например. всякие RxJava делают то же самое куда элегантнее или там java streams. два последних подхода могут быть спорными, но тупой перебор да еще итакой многословный...
Извините, но код который вы привели не говорит, что для хранения данных в корзине использовалось что либо наподобии хеш таблиц или любого рода упорядоченные списки. Я лично решил, что это обычный не упорядоченый список в котором лежат объекты. Кстати для хранения небольшого количества данных (несколько десятков) - а в обычной корзине покупателя их обычно бывает всего несколько штук, вряд ли имеет место использовать что либо другое. Так что обычный линейный перебор - оптимальное решение. ИМХО.

alex_127
Уже с Приветом
Posts: 1885
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Re: 55+ в ИТ

Post by alex_127 » 08 Oct 2018 21:14

Дык науки говорит что все зависит от размера карта! Без этого знания как решить...

alexan1
Новичок
Posts: 57
Joined: 11 Oct 2015 17:03

Re: 55+ в ИТ

Post by alexan1 » 08 Oct 2018 21:16

АццкоМото wrote:
08 Oct 2018 21:07
valchkou wrote:
08 Oct 2018 19:38
АццкоМото wrote:
08 Oct 2018 15:10
Вообще КМК, возвращаясь к обходу деревьев, проблема совсем в другом. Знать структуры данных и базовые алгоритмы - недостаточно. Нужно их применять правильно и предсказуемо. Вот у нас есть чел старенький, думаю, лет 60. Он бодряк ого-го и код, вполне рабочий, пишет просто на ходу стирая шины. Побольше чем я раза в 2-3. Но если нужно проверить, условно, есть ли айтем в корзине, то код будет примерно такой:

Code: Select all

boolean isItemInCart(Item item) {
   for (int i=0; i<cart.size(); i++) {
   	if (cart.getItem(i).getId() == item.getId() {
   		return true;
   	}
   	return false;
   }
}
И, сцукко, это попаболь. Он обойдет дерево на интервью, расскажет про кучу алгориитмов, про какие-нибудь серо-буро-зеленые деревья. А вот в продакшн будет срать вот это УГ.

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

Мой ответ это юниттесты. Да это не дает даже 90% защиты от дурака. Но хотябы вынуждает его думать хоть немного и самому ковырятся почему его код не работает.
Не без доли хвастовства хочу отметить что мои проекты довольно стабильны на продакшн, что даже отмечено руководством, но весь секрет в моих тест сценариях.
Я не жалею времени на создание под-задач и расписывание юниттест сценарии под них. И пока я не увижу что мои сценарии покрыты я даже не пытаюсь понять что происходит в алгоритме.

но я только рад, благодаря вот таким "специалистам" нанимают меня контролировать конвейер и как я считаю даже переплачивают по рынку.
Ну, тут конфьюжн. То, что return false; не на месте - это мой факап, не того чувака. Еще раз: код он пишет вполне рабочий, багов производит не больше других.

Речь шла про использование тупого перебора в цикле, ровно как делали при Иване Грозном
а ламбду лучше?

хотелось бы увидеть правильны код

rorp
Уже с Приветом
Posts: 251
Joined: 24 May 2013 22:04

Re: 55+ в ИТ

Post by rorp » 08 Oct 2018 21:21

АццкоМото wrote:
08 Oct 2018 15:10
Он бодряк ого-го и код, вполне рабочий, пишет просто на ходу стирая шины. Побольше чем я раза в 2-3. Но если нужно проверить, условно, есть ли айтем в корзине, то код будет примерно такой:

Code: Select all

поскипано
Вот поэтому он и пишет побольше чем ты раза в 2-3.

User avatar
valchkou
Уже с Приветом
Posts: 3230
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: 55+ в ИТ

Post by valchkou » 08 Oct 2018 21:24

alexan1 wrote:
08 Oct 2018 21:16
АццкоМото wrote:
08 Oct 2018 21:07
valchkou wrote:
08 Oct 2018 19:38
АццкоМото wrote:
08 Oct 2018 15:10
Вообще КМК, возвращаясь к обходу деревьев, проблема совсем в другом. Знать структуры данных и базовые алгоритмы - недостаточно. Нужно их применять правильно и предсказуемо. Вот у нас есть чел старенький, думаю, лет 60. Он бодряк ого-го и код, вполне рабочий, пишет просто на ходу стирая шины. Побольше чем я раза в 2-3. Но если нужно проверить, условно, есть ли айтем в корзине, то код будет примерно такой:

Code: Select all

boolean isItemInCart(Item item) {
   for (int i=0; i<cart.size(); i++) {
   	if (cart.getItem(i).getId() == item.getId() {
   		return true;
   	}
   	return false;
   }
}
И, сцукко, это попаболь. Он обойдет дерево на интервью, расскажет про кучу алгориитмов, про какие-нибудь серо-буро-зеленые деревья. А вот в продакшн будет срать вот это УГ.

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

Мой ответ это юниттесты. Да это не дает даже 90% защиты от дурака. Но хотябы вынуждает его думать хоть немного и самому ковырятся почему его код не работает.
Не без доли хвастовства хочу отметить что мои проекты довольно стабильны на продакшн, что даже отмечено руководством, но весь секрет в моих тест сценариях.
Я не жалею времени на создание под-задач и расписывание юниттест сценарии под них. И пока я не увижу что мои сценарии покрыты я даже не пытаюсь понять что происходит в алгоритме.

но я только рад, благодаря вот таким "специалистам" нанимают меня контролировать конвейер и как я считаю даже переплачивают по рынку.
Ну, тут конфьюжн. То, что return false; не на месте - это мой факап, не того чувака. Еще раз: код он пишет вполне рабочий, багов производит не больше других.

Речь шла про использование тупого перебора в цикле, ровно как делали при Иване Грозном
а ламбду лучше?

хотелось бы увидеть правильны код

Code: Select all

	
	boolean isItemInCart(Item item) {
	    return cart.getItems().contains(item);
	}

User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 10299
Joined: 27 Sep 2007 22:53

Re: 55+ в ИТ

Post by Мальчик-Одуванчик » 08 Oct 2018 21:48

cart.getItems() - переливаем из пустого в порожнее?
Сборщик мусора все стерпит.

User avatar
valchkou
Уже с Приветом
Posts: 3230
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: 55+ в ИТ

Post by valchkou » 08 Oct 2018 22:06

Мальчик-Одуванчик wrote:
08 Oct 2018 21:48
cart.getItems() - переливаем из пустого в порожнее?
Сборщик мусора все стерпит.
п-ть не мешки ворочать, предложите ваше решение

User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: 55+ в ИТ

Post by АццкоМото » 08 Oct 2018 23:05

valchkou wrote:
08 Oct 2018 21:24

Code: Select all

	
	boolean isItemInCart(Item item) {
	    return cart.getItems().contains(item);
	}
Ну вот да, хотя бы как-то так. Даже полученное с сервера в виде массива сохранить во что-то отличное от массива/ArrayList почему-то большинству в голову не приходит

Хотя на самом деле куда интереснее, когда нужно, например, посчитать общую стоимость айтемов в карте в предположении, что их может быть чуть больше 100500 миллионов. Тоже вроде бы не бином ньютона, а мало кто напишет эффективно. ИЧСХ даже тривиальное решение типа "а зачем считать при необходимости, можно же счетчик менять, когда добавляем/удаляем" тоже мало кто даст

И это очень грустно
Мат на форуме запрещен, блдж!

User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: 55+ в ИТ

Post by АццкоМото » 08 Oct 2018 23:06

Мальчик-Одуванчик wrote:
08 Oct 2018 21:48
cart.getItems() - переливаем из пустого в порожнее?
Сборщик мусора все стерпит.
а в чем проблема-то?
Мат на форуме запрещен, блдж!

User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 10299
Joined: 27 Sep 2007 22:53

Re: 55+ в ИТ

Post by Мальчик-Одуванчик » 08 Oct 2018 23:07

valchkou wrote:
08 Oct 2018 22:06
Мальчик-Одуванчик wrote:
08 Oct 2018 21:48
cart.getItems() - переливаем из пустого в порожнее?
Сборщик мусора все стерпит.
п-ть не мешки ворочать, предложите ваше решение
Нахрена на форуме ворочать мешки - я сюда исключительно потрындеть прихожу.
Если cart - контейнер, то воспользовался алгоритмом find, определив оператор равенства для item, если нет - то задал бы для него итераторы.
Если совсем лень - то тупо заменил простой цикл на его range-base форму типа: for(auto item_ : cart) ....

User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 10299
Joined: 27 Sep 2007 22:53

Re: 55+ в ИТ

Post by Мальчик-Одуванчик » 08 Oct 2018 23:14

АццкоМото wrote:
08 Oct 2018 23:06
Мальчик-Одуванчик wrote:
08 Oct 2018 21:48
cart.getItems() - переливаем из пустого в порожнее?
Сборщик мусора все стерпит.
а в чем проблема-то?
Ну когда одно говно превращается в точно такое же, но с вишенкой сверху то это явно проблемма дизайна структуры данных.
И на мой взгляд это явный косяк: чтобы узнать свойство обьекта преобразовывать его к обьекту другого типа.

Return to “Работа и Карьера в IT”