Що має знати Senior Java Developer. Результати аналізу вакансій в Україні та Каліфорнії

Рекрутери складають вакансії разом з провідними технічними експертами своїх компаній. Їхня співпраця дозволяє врахувати специфіку проекту та встановити адекватний рівень загальних вимог.

Тобто можна сказати, що наш аналіз 100% вакансій, відкритих в Україні та Каліфорнії, дорівнює опитуванню експертів понад 100 компаній. Ми з’ясували, в чому думки розумних людей сходяться. Ігор Яновський відобразив це на віджеті.

У Каліфорнії до дослідження потрапили серед інших вакансії компаній Blizzard, Disney, Glassdoor, Hewlett Packard Enterprise, LG Electronics, Moody’s Analytics, Oracle, PayPal, SAP, Walmart.

Те, що не можна було передати цифрами, запрошені експерти розповіли словами. А ще у вакансіях було знайдено багато цікавого: нестандартні проекти, хто пропонує ЗП до 7k та де співають караоке. Читайте та залишайте коментарі: як добрі, так і гнівні, це ж ДОУ ;)

Як рахували

Станом на 8 березня в рубриці Java на DOU було розміщено 79 вакансій Senior Developer. У Каліфорнії на LinkedIn станом на 20 травня мені підійшло 60 вакансій. Пошукова видача на LinkedIn, Indeed (який часто дублює LinkedIn) та Rabota.ua може показувати досить велику цифру, але це відбувається за рахунок нерелевантних результатів.

Вакансії стафінгових агенцій я ігнорував. Одну вакансію можуть вести декілька агенцій, що призвело б до викривлення результатів. Крім того, деякі стафери можуть практикувати фейкові вакансії, щоб наповнювати свою базу кандидатів.

Аналіз був здійснений вручну, а не скриптом. Це пов’язано з тим, що назва технології може бути записана в вакансії з помилкою. Але значно вагоміша причина в тому, що в разі проходження скриптом поза увагою опинилися б технології, не включені в попередній список.

Результати

Цей віджет дозволяє побачити, чи дійсно ви вкладаєте зусилля у технологію, яка потрібна на ринку праці. Чи, може, в одну з тих, з якими знайти роботу не так просто.

Розбивка навичок на категорії є умовною та покликана спростити сприйняття інформації. Місцями об’єднання тих чи інших навичок в спільну категорію може бути спірним.

Ще 189 технологій не потрапили на віджет, оскільки вони не трапились ані в Україні, ані в Каліфорнії більше двох разів. Так буває (і часто), що на проекті використовують або вірять у перспективність якоїсь технології, яка не є загальноприйнятою на ринку праці. Наприклад, Dropwizard.

Відсотки округлено до цілих з метою спрощення сприйняття.

В Україні — англійська, в Каліфорнії — диплом за спеціальністю

Що справді відрізняє Каліфорнію від України — це потреба для Java-розробника мати профільну вищу освіту. 63% вакансій в Каліфорнії вимагають бакалавра в Computer Science або еквівалент проти 16% в Україні.

Настільки ж велику роль, як в Каліфорнії диплом, в Україні відіграє англійська мова. Її згадує 61% вакансій. Але лякатись немає чого. Здебільшого потрібен рівень Intermediate, трохи рідше — Upper-Intermediate. Advanced не згадано в жодній вакансії, і тому може бути причиною мала кількість та висока ціна на роботу розробників з дійсно хорошою англійською. Традиційно наведу конкретні цифри зарплат згідно з альтернативним віджетом.

Pre-IntermediateIntermediate. 64 анкети. 3 361 доллар на місяць чистими.
Upper-Intermediate. 116 анкет. 3 745.
Advanced. 26 анкет. 3 912.

Небажання вчитись та підтягнути свій рівень до Advanced коштує (3 912 — 3 361) x 12 = 6 612 доларів на рік. Цікаво, що для PHP цей розрив значно більший і складає 9 060 на рік.

Soft Skills: «Social», «Responsible and Brave»

Комунікативні навички згадано сукупно в 52% вакансій Каліфорнії, тоді як в Україні 30%. Цю категорію можна було б назвати також soft skills, тому що, як правило, очікується дещо більше за вміння комунікувати. Але складно чітко зрозуміти, що таке soft skills. Кожен має своє уявлення. Для Ciklum важливо, щоб працівник був «Social» та «Strong team player». Компанія VizExplorer в Каліфорнії так описує свої вимоги: «Good interpersonal skills including the ability to communicate and present ideas and concepts». А компанія GetSocial шукає в Україні працівника, який буде «Responsible and brave».

Hard Skills. Найбільш перспективні — AWS та Docker

Що стосується hard skills, ви можете зробити всі висновки самостійно з віджету. Видно, що Україна та Каліфорнія є так чи інакше достатньо близькими. Немає такого, щоб ми відставали або користувались альтернативним стеком технологій. І це не дивно для аутсорсингової країни.

В якості додаткових побажань роботодавці найчастіше вказували AWS та Docker. Трохи рідше — Apache Kafka, microservices, NoSQL, Python та AngularJS. Можна назвати їх найбільш перспективними для опанування, оскільки, щоб потрапити в додаткові побажання, технологія має бути затребувана на проекті, тоді як знайти спеціаліста з таким досвідом непросто.

Цікавинки, знайдені у вакансіях. 7k, MS Word, Ability to sing Karaoke!

Україна

Ciklum шукає Java Team Lead для платіжної системи Mercedes Pay від Daimler.

Для працевлаштування в Intellias на навігаційний проект HERE знадобляться знання математики, включаючи теорію ймовірностей, статистику та геометрію. Це може бути цікавим для тих, хто вважає свою поточну роботу недостатньо інтелектомісткою.

GlobalLogic пропонує відрядження до Австралії.

Дві компанії шукають розробника з почуттям гумору: Skelia та PDFFiller. Можливо, це ви?

Вакансії, що втратили актуальність за час підготовки матеріалу, все ще дають змогу скласти уявлення про те, які проекти є в країні.

Компанія GetBetter пропонувала на ремоуті компенсацію до 4800. Буде плюсом знання екстремального програмування. Вищі зарплати (до 7000) вказали лише стафінгові агенції. Останні хочуть наповнити довірливими девелоперами свої бази даних, тому їхні «вакансії» були проігноровані в дослідженні.

Львівська компанія BotsCrew пропонувала в зимовий період працювати з Таїланду.

Для компанії Solve.Care, яка працює в індустрії охорони здоров’я, був плюсом досвід з AI, ML, NLP, Blockchain.

Одеська компанія Productive Edge вказувала у вимогах «Применение постоянного рефакторинга, вместо создания архитектуры на все случаи жизни». Саме таку концепцію просував легендарний Мартін Фаулер.

Каліфорнія

Disney вказує у вимогах серед іншого знання Microsoft Word та Google.Docs. Я протирав очі, чи це точно вакансія Java розробника.

Для компанії TrustArc буде плюсом «Ability to sing Karaoke!».

Думки технічних експертів

Микола Северин, Senior Java Developer в Beetroot

Роздумуючи про те, що має знати Senior Java Developer, в першу чергу на думку спадають не технології і бібліотеки (що само собою зрозуміло), а вміння декомпозувати предметну область, зрозуміти, як працює бізнес замовника і яка роль в цьому бізнесі належить програмному продукту, що розробляється.

Також важливим навиком senior розробника є знаходження балансу між гнучкістю та простотою створюваної системи. Для розуміння, по яких осях зміни в майбутньому ймовірні, а по яких — малоймовірні, розробник має налагодити гарну комунікацію як із замовником, так і всередині команди.

Наразі актуальними на ринку Java-розробки є два стеки технологій: Spring і Java EE. Використання будь-якого з них, як правило, веде до виникнення блідої моделі предметної області (anemic domain model). Я б порадив розробникам, які вже впевнено використовують такий підхід, подивитися в бік розробки програмного продукту на основі багатої моделі предметної області (rich domain model). Такий підхід дозволяє використовувати всі переваги ООП, і, на мою думку, в майбутньому його актуальність буде знову зростати.

Але потрібно завжди мати на увазі, що золотого молотка як серед технологій, так і серед методологій розробки не існує. Тому senior розробник при прийнятті кожного рішення зважує його переваги та вартість. Адже зазвичай немає правильних і неправильних рішень, є рішення, які підходять в конкретній ситуації, і які — ні.

Богдан Шияк, автор Java дайджесту на DOU

Зазвичай ми можемо провести якусь (скоріше за все суб’єктивну) межу між junior та middle, базуючись на рівні технічних знань. Проте провести таку межу між middle та senior вже набагато складніше. Однією з причин цього є те, що на рівні senior у фахівця з’являється спеціалізація. Людина може мати поглиблені знання в царині реляційних БД, при цьому не маючи досвіду з NoSQL, спеціаліст в NoSQL може не вміти працювати з UI (принаймні з сучасними підходами до UI), full stack розробник може не мати досвіду з AWS (наприклад, тому що працював з GCP :) ) тощо. Тому, на мій погляд, коректніше проводити межу middle/senior, відштовхуючись від зрілості спеціаліста: готовності брати на себе відповідальність, проактивної позиції, вміння розуміти бізнес і знаходити баланс між потребами бізнесу та «технічною досконалістю системи» і, напевно, найважливіше, вміння та бажання навчатися.

Готовність брати на себе відповідальність (за реалізацію чогось, а не за чиїсь помилки :) ) та проактивна позиція — є факторами, що в цілому позитивно впливають на кар’єрне зростання. Вміння розуміти бізнес та доносити свої ідеї до нього важливе, бо senior так чи інакше контактує з представниками бізнесу набагато більше, ніж middle. Вміння навчатися важливе, бо «with great power comes great responsibility»: якщо команда не може знайти рішення проблеми, то сеньйорний її складник зобов’язаний запропонувати вирішення бізнес-проблеми, якщо не на основі свого досвіду, то на основі досвіду інших людей.

Щодо результатів дослідження, то нічого шокуючого в них немає. Дивно було б побачити вимогу володіти англійською мовою в країні, де ця мова є національною, особливо для спеціальності, котра все ще вимагає наявності вищої освіти. Оскільки система освіти в США живе та процвітає, то цілком логічно бачити вимогу про наявність у кандидата профільної вищої освіти. Українська ж освіта в основному «навчає навчатись», тому не так важливо чи у вас диплом, пов’язаний з CS, чи математика, фізика, хіміка або економіста. Вимоги знання OOP/Data Structures/Algorithms — це фактично перевірка наявності у вас диплома (або вміння навчатись).

Андрій Петрик, співорганізатор JavaDay Lviv, Java Engineering Manager в CoreValue

Каліфорнія — це, звісно, прекрасно. Але не Каліфорнією єдиною — тех. сектор розвинутий і у Вашингтоні, Орегоні, Техасі, Джорджії, Колорадо, Бостоні, Флориді та Нью-Йорку. І вимоги до кандидатів будуть відрізнятись, як і винагорода за працю.

Іншою особливістю Каліфорнії є те, що вона hype-driven. Як тільки «авторитетна» компанія починає використовувати ту чи іншу технологію — решта ринку з великою часткою ймовірності її наслідує (особливо це характерно для стартапів). Так було зі Scala, потім з Node, а от зараз з Go. Java — не про хайп. Hype is temporary, Java — eternal.

З точки зору найму і оцінки сеньйорності — це завжди «впирається» в скіловість і кругозір того, хто здійснює найм/проводить інтерв’ю. За мою кар’єру часто бували випадки, коли люди представились (і відповідно претендували на позицію) сеньор девелопером, а при мінімальному перегляді з тріском провалювались, не дотягуючи навіть до мідла. У більшості випадків це було пов’язано з небажанням кандидатів продовжувати вчитися, адаптуватися до нових умов. Я скажу те, з чим, напевно, багато хто не погодиться, але, на мій погляд, зараз Java — одна з тих мов, які швидко розвиваються, адаптується до ринку і (сам не вірю, що це кажу) змінюється. Для мене це один (але звісно не єдиний) з критеріїв визначення мачурності кандидата — знання, куди рухається платформа і до чого слід бути готовим в 1-2-річній перспективі.


P. S. Наступний випуск буде присвячений Front-end, і ми в пошуку профільних експертів. Якщо вам цікаво взяти участь, напишіть мені, будь ласка, на LinkedIn.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному2
LinkedIn



78 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

За посиланням — цікава стаття в блозі Intellias на тему «Що має знати Senior Java/Scala розробник», автор — Анатолій Бедь.

что чаще всего спрашивают на собесах за границей у джава девелоперов: Java core , OO, Design Patterns, SOLID, Multithreading, Collections, O(n)-анализ, Dependency injection, SQL vs NoSQL, основы REST, основы СУБД и транзакции. Специфические либы или фреймфорки — очень редко и только если самые основы.

Оцей останніц паца з корвелью він Каліфорнію на обоях свого монітора бачив і ХБОшний серіал про стартапи подивився...

Computer Science в Украине никому не нужен?

CS в Україні потрібен інженерам аби пройти співбесіду в топові західні компанії %)

CS в Україні потрібен інженерам аби пройти співбесіду в топові західні компанії %)

І не тільки в Україні :)

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

Гарний аналіз відмінностей у вимогах що схожих вакансій в таких різних країнах як США та Україна.

Чекаю на схожі майбутні публікації для інших IT спеціальностей.

блідої моделі предметної області (anemic domain model)

може краще немічної?

в майбутньому його актуальність буде знову зростати

оптиміст. Ніколи цього не буде скільки б розумних книжок хто б не написав і як би не переконував у перевагах. Як писали процедурки зі структурками так і будуть писати.

Діма, дякую за цікаву статтю!
Дозволю собі висловити своє скромне побажання, можливо тобі теж буде цікаво: особисто мені цікаво було б почитати таку статтю про QA/Test -інженерів в нас і в CA.

Слушне побажання, Романе. Дякую за ідею!

Класний аналіз!
Дайош такий і по іншим мовам!

з критеріїв визначення мачурності кандидата

ох цей довколоайтішний едалт новояз

Давайте по плюсам і по пайтону такі статті.

Ці технології є в планах. До речі, Python був присвячений останній випуск Djinni Insights. Там була аналогічна статистика з Djinni.

в Калифорнии очень многие компании вообще не будут указывать язык программирования в тайтле

Да. Поэтому в LinkedIn поиск учитывает не только тайтл (подтягивая при этом и кучу нерелевантных результатов).

Есть и вакансии, где язык программирования не важен. И в то же время многие компании, в том числе крупные, формулируют свои требования как «7 лет опыта ИСКЛЮЧИТЕЛЬНО на Java».

Подразумевая древний легаси проект с веблоджиком и ejb

Я думаю, подразумевают, что это не должен быть человек, у которого из 7 лет только 3 как джавист, а ещё 4 года он был, например, плюсовиком. Такое ведь не редкость.

я таким и был. из c++ перескочил в java , умудрившись остаться в звании синьора :-) главное успешно врать на собеседовании :-))) я думаю, что фишка в том что те у кого меньше 7 лет опыт в Джаве, не знают что такое EJB. имхо умный человек разберется

Даже врать не нужно, правда я сделал миграцию внутри компании.

«Не знают» в смысле «не познали на себе всю боль и весь дзен»?

Во всех компаниях сеньйорские требования абсолютно разные. Человек может быть в своей компании серьйором сидя на Java 1.3 с каким-то свингом, но попробует нырнуть на другой проект с Java 1.9 где натыкано много всего, и там он будет почитаться даже не мидлом.

Якщо він не зможе швидко і ефективно розібратись з новою версією своєї технології, то він ніколи і не був сіньйором.

Вміє вирішувати комплексні проблеми, а не тільки формошльопити == Senior
Хоча навіть так: «Видел некоторое дерьмо» і знає, що з цим робити == Senior

Писать на Java 1.3 в 2019, это типа как писать на С# 2 в 2019. Такое реально бывает?

Ну 1.3 не знаю 1.6 есть куча проектов + оракл древнейший у епамовцев такие проекты есть.

перформанс и траблшутинг на дне

Дві компанії шукають розробника з почуттям гумору: Skelia та PDFFiller. Можливо, це ви?

PDFFiller. Это гениально

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

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

Эту статистику сложно интерпретировать.
От того насколько часто технология упоминается в вакансии нельзя сказать насколько она важна либо же каков должен быть уровень владения.
К примеру, я знаком с 80% стэка описаного здесь, подойду ли я на должность синиора? ( и да, мне 25 :D )
Даже пойдем немного по другому пути, возьмем «самый востребованый» навык из каждой закладки:
Диплом Специалиста (Magister of Arts, даже круче Бакалавра). Английский.
OOP, Design Patterns
Комуникационые навыки (конкретно этот навык как качать? А проверять?)
Scrum, Agile
Java 8, Java EE
REST
microservices
Spring Framework
SQL, NoSQL
Eclipse, Jira
Jersey
Apache Tomcat
RabbitMQ, Maven
Docker, AWS
Apache Kafka
JUnit, TDD, Mockito
TroubleShooting
Git
JavaScript
JSON/XML
Unix-based systems

В чем тут проблема? В том что джуну всё тоже самое нужно. И трейни тоже. И Синиору.
Если бы вакансии искались не по тегу Senior Developer, а допустим Middle или Junior был бы результат другим?

к примеру:
rabota.ua/...​any5264610/vacancy7672563
rabota.ua/...​pany472186/vacancy6293791
www.work.ua/ru/jobs/322071

Поменять опыт работы с «больше 1 года» на «больше 5 лет» и готова вакансия на синиора.

Да и зачем далеко ходить. Весь список сверху + 3 года опыта = претенд на джуна dou.ua/...​rums/topic/27323/#1607059

Если я не прав — поправьте меня. Я не против того, чтобы узнать что-то новое или пересмотреть свою позицию, если найдутся подходящие аргументы

Жодним чином не заперечую. Навіть один з експертів, Богдан Шияк, написав:

Зазвичай ми можемо провести якусь (скоріше за все суб’єктивну) межу між junior та middle, базуючись на рівні технічних знань. Проте провести таку межу між middle та senior вже набагато складніше.
коректніше проводити межу middle/senior, відштовхуючись від зрілості спеціаліста

Скоріше, вакансії Senior допомагають кристалізувати, над вдосконаленням яких саме навичок слід працювати на рівнях Junior та Middle. Мова не йде про окремий стек для Senior. Зрештою всі працюють разом на тих самих проектах. Але 189 технологій просто не потрапили на віджет, тому що не трапились більше двох разів. Цей віджет дозволяє побачити, чи дійсно ви вкладаєте зусилля у технологію, яка потрібна на ринку праці. Чи, може, в одну з тих, з якими знайти роботу не так просто.

Цей віджет дозволяє побачити, чи дійсно ви вкладаєте зусилля у технологію, яка потрібна на ринку праці. Чи, може, в одну з тих, з якими знайти роботу не так просто.

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

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

джуну всё тоже самое нужно
трейни
TroubleShooting

серьезно? У трейни? Траблшутинг?

Docker, AWS

У трейни, да?

RabbitMQ
Apache Kafka

Трейни, точно?

Scrum, Agile

Я прям представляю, приходит такой трейни на твою галеру, а он уже скрам мастер с 7 годами опыта и дипломами.

точно. Подтверджений не найду — банально нет таких вакансий сейчас, остались только джуны с 1+ опыта

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

Если не умеешь дебажить

Дебаг == траблшутинг? Сириозли?

точно

Вот это ты от реальности оторванный норм так...

1. Мы вместе не пили, чтобы ты ко мне на «ты» обращался
2. www.google.com/...​leshooting&oq=debug vs tr
3.в вакансиях указывается все. Для трейни большая часть требований переходит в пожелания

2. www.google.com/...​leshooting&oq=debug vs tr

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

Я тут при чем? :( если года четыре назад такие видел. Не сохранял ибо не думал что понадобится.
хотят мидла со скилами синиора на зарплату джуна. Обучать никто не хочет

Тогда сорян. Я думал это твое личное мнение, что трейни должен знать докер, кафку и траблуштить аки боженька

точно

Ага. Я помню, еще когдато у глобалложика висела вакансия джуна с требованием OSGi.

Диплом Спеціаліста будь-якого вузу в Україні і близько не стояв поруч із Дипломом Бакалавра Computer Science будь-якого американського університету.

Якщо ви пишете, що ви Magister of Arts, то в мене є сумніви з приводу вашої англійської. По-перше, це називається Master of Arts. По-друге, Спеціаліст в Україні != Master Degree в США.

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

PS: за Soft Skills не переживайте. Їх дуже легко оцінити, коли отримуєш листа по електронній пошті, а там немає ні «добрий день», ні підпису від кого він.

С master of arts мой косяк, поскольку в жизни нигде не пригодились и нигде не писал
Софт скиллз так оценивать... Мда. Хотя не говорю что недейственно.
На счёт образования в США делать выводы не буду, не так близко знаком. Может вы расскажете что там есть, чему нельзя научиться самому в Украине? Кроме долга в сотни тысяч долларов. Хотя....

Є деякі скіли, які вивчаються в США в університеті, які не можна вивчити в Україні.
— Якщо є дедлайн здачі роботи онлайн, 5 жовтня о 14:00, а ти запізнився на 1хв. Нікого не цікавить, що в тебе відключили Інтернет або пропало світло.
— На зробив вчасно завдання, не отримав бали за нього.
— Не здав екзамен по предмету, вилітаєш із універу. Занести комусь грошей, щоб отримати оцінку не можна. Домовитись не можна.

Це ті скіли, якими не володіє 90% людей, які працюють в IT в Україні. Я не впевнений, чи ним можна навчитися самостійно.

Я не буду порівнювати програму (вона опублікована на сайті кожного університету). Раджу порівнювати програму топових українських університів із топовими в США.

В Америке есть пересдачи. Ты не вылетаешь из-за одного предмета, мало того практика все или ничего применяется в японских школах, а не американских университетах.
Этими скилами американцы собственно тоже не владеют
Договариваться можно, но там это исключение, а не правило. Не Япония, опять же
Программа же... Она в свободном доступе для мит, так что зачем сравнивать если можно её самостоятельно изучить?

Вам видніше. Я досить часто спілкуюся із американцями і українцями. Я сужу лише із персонального досвіду. Американці переліченими мною скілами володіють набагто краще.

Програма є, але за лекції онлайн Standford або MIT потрібно платити і чималі гроші.

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

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

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

Я даже спросить стесняюсь (потому что сам не знаю ответ).. А вы над чем работаете, что такой вопрос задаёте?

Це питання відноситься до базових знань в Computer Science. Якщо людина хоче працювати розробником, то, нам мою думку, має володіти базовими знаннями.

Я бы поспорил но... И как часто вы это знание используете?

Після того, як розробник написав алгоритм із складністю O(n^7), бо він не задавався такими «непрактичними» питаннями. Хоча n були не великі <20 це працювало досить повільно.

Тепер я це питання задаю всім.
PS: ви на StackOverflow знайшли відповідь не зовсім на те питання, яке я питав.

Можно тогда ответ на правильный вопрос? Я вопрос как понял, так и искал. О чем он был на самом деле?

Швидкість доступу до масиву має алгоритмісну складність O(1). Тобто не залежить від довжини масиву.

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

Переважно, але НЕ обов’язково — залежить від реалізації. :)

Можете будь-ласка сказати мову, де МАСИВ реалізований із доступом до існуючого елементу не за O(1)?

Це скоріше не від мови залежить, а від застосування. Якщо взяти дво- і більше вимірні масиви, скажімо розріджені, там можливі варіанти внутрішньої реалізації не в виді массиву (в алгоритмічному розумінні, як структури даних), а в виді b-tree чи ще чогось.

Доступ до елементу в двовимірному розрідженому масиві буде не O(1)? Якщо використовувати іншу структуру даних, то логічно, що алгоритмічна складність може відрізнятись. Оригінальне питання стосувалося звичайного масива.

Доступ до елементу в двовимірному розрідженому масиві буде не O(1)?

Ну коли начинається важкий пейджінг, то там і в O(N) можна влетіти з ходу.
Але такі речі, авжеж, в базі звичайно не згадуються.

Я не зустрічався на практиці із читанням існуючого елементу масиву із складністю O(N) де N це довжина масиву. Буду вдячний за реальний приклад такої ситуації.

После я честно загуглил ответ :
stackoverflow.com/...​-a-piece-of-data-in-the-a
И я очень сильно задумался. Во первых о том на каком предмете преподают это. Во вторых зачем.

Пс: так каков правильный ответ?

Во первых о том на каком предмете преподают это. Во вторых зачем.

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

Пс: так каков правильный ответ?

Так он по ссылке на SO рассказан :)

Внимательно читать надо тему, вопрос на со не тот, и ответ другой

Пс: нет такого предмета, это направление

Внимательно читать надо тему

Хороший рецепт, примените к себе.

вопрос на со не тот, и ответ другой

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

Или вам настолько критична двумерность и разреженность массива? ;)
По-моему, достаточно понимать самые азы, чтобы знать, что и первое ни при чём (да хоть 26 измерений), и второе — ибо разреженность относится к содержанию, а не к доступу.

Хотя, да, согласен, из-за того, что в Java вместо многомерных массивов костыли — тут начинает влиять ещё и индексация. Может, на несколько процентов подправит ответ.

Какая нафиг двумерность? Вы с телефона читаете? Не на тот тред отвечаете и дату не посмотрели.
Первое: вопрос был про алгоритмическую сложность, а не про скорость.
Второе : я спрашивал про реализацию поиска элемента в массиве, что не преподают на курсе cs

Прочтите все ещё раз

Вы с телефона читаете?

С калькулятора. ©

и дату не посмотрели

И что с датой? Всяко не 5 лет назад. Вчера и сегодня.

Первое: вопрос был про алгоритмическую сложность, а не про скорость.

Ну круто.
Так вот, они как раз при обычной теоретической оценке приравниваются друг другу (с каким-то фиксированным множителем). И это имеет смысл в большинстве случаев: константы в формулах типа O(N^2) ~= C*N^2 меряются во временны́х единицах.
Это, собственно, ответ на ваш вопрос «зачем такое учат». Слабо верится, что вы этого не знаете — скорее проглотили дух противоречия.

Второе : я спрашивал про реализацию поиска элемента в массиве, что не преподают на курсе cs

Нет, вы не то спрашивали. Цитирую:

>>

А вы над чем работаете, что такой вопрос задаёте?

(это про время доступа к элементу)

Это не «про реализацию» и про «не преподают». Это «над чем работаете», дословно.
Если вы подразумевали что-то иное, то в текст оно не попало.

Прочтите все ещё раз

Прочёл. То, что написано. Между строк и телепатию не умею, извините.

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

Мы тут о другом говорили, реально что-то не так читаете.

чи залежить час доступу до елементу масиву від довжини масиву

Первое, что пришло на ум, тема про уровни кешей процессора, так что однозначно зависит, может отличаться в 10-20 раз. А ответ O(1). Класс.
Тоесть, я правильно Вас понял, что большинство самоучек считают, что зависимость есть?

Як кеш процесора впливає, на алгоритмічну складність структури даних? Якщо «не повезе» із кешом, то сортування і інші алгоритми теж можуть працювати довше.

Я не раз чув від тих хто вчився сам, що в масиві доступ O(N) бо потрібно всі елементи перебрати. Також я чув, що додати 2+2 буде працювита швидше ніж 2^16 + 2^16, бо числа менші.

Як кеш процесора впливає, на алгоритмічну складність структури даних?
чи залежить час доступу

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

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

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

На жаль, поки що, мені такі люди на співбесіді не траплялися.

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