Co by měl vědět backend vývojář. Od podvozku k backendu

Volné místo:
backend Web Developer.

Jedním z požadovaných specialit v oblasti vývoje webu je vytvoření backendu, to znamená, že serverová část webové aplikace. Pro úspěšnou zaměstnanost profesionálů je zapotřebí určitá zavazadla znalostí a dovedností. Zástupci společností říkají, co odborníci chtějí vidět v jejich týmu

  1. Jaké znalosti a dovednosti by měl mít backend-Web Developer?
  2. Co je to sada nástrojů backend webový vývojář?
  3. Jaké jsou požadavky společnosti na tvorbu potenciálních zaměstnanců?
  4. Jaké jsou požadavky na pracovní zkušenosti?
  5. Existují nějaké zvláštní požadavky, které jsou způsobeny specifičností společnosti?

Arthur Bozhenov, senior programátor katedry interní automatizace pozitivní technologie

Timur Himullin, Přírodní inženýr pro automatizaci testování katedry rozvoje technologií Pozitivní technologie

1. Arthur Bozhenov: Backend Web Developer musí mít následující dovednosti a znalosti:

  • programování více závitů;
  • principy kyseliny (atomicita, konzistence, izolace, spolehlivost) a jejich aplikace v praxi;
  • obecné principy síťové architektury a protokolů;
  • Životní cyklus požadavku HTTP / odezvy, průchodovou cestu;
  • ochrana síťových připojení (HTTPS). Povolení. Nastavení přístupových práv ke zdrojům;
  • Odpočinek, odata, webapi, mýdlo;
  • webové služby;
  • webová aplikace Hosting (IIS, Nginx, LighttPd, UnEl.js, Apache);
  • škálovatelnost řešení, vyrovnávání / směrování požadavků;
  • protokolování;
  • ukládání do mezipaměti dat;
  • ukládání dat (odpovídající volba metody úložiště v závislosti na úloze);
  • práce s velkými množstvím dat.

2. Arthur Bozhenov: Základní Toolkit Backend Web Developer:

  • pohodlný IDE (vizuální studio, netbeans atd.);
  • sLUŽBY NEBO POTŘEBY PRO VYTVOŘENÍ / PROHORUČENÍ / ZMĚNA / ÚLOHA REGEX výrazy, JSON, XML, text v nesprávném kódování;
  • Google a stackoverflow;
  • Mongodb / redis / memcached;
  • Elasticsearch / kibana;
  • Rabbitmq / Zeromq / MSMQ a další MQ.

Timur Himullin: Pokud jde o IDE, to je případ chuti, alespoň Poznámkový blok (Sabloim, JE), ale já bych vypadal lépe ve směru Jetbrain produktů, a jiní, kteří jsou navzájem dobře integrováni.

3. Arthur Bozhenov: Vyšší (volitelné) technické (povinné). Zkušenosti praktická práce důležitější.

Timur Himullin: Pokud jde o vzdělání, je lepší technický nebo matematický.

4. Arthur Bozhenov: 3-5 let vývoje ne-frontend.

Timur Himullin: Pro backend vývojářům nemohu objasnit.

5. Arthur Bozhenov: Analytická mysl.

Timur Himullin: Skutečná dovednost pracovat v týmu a schopnost vyjednávat. Developer, který neví, jak modelovat a pokračuje v práci okamžitě bez přemýšlení celkovou architekturou a interakcí všech aplikačních modulů, nebudu brát nikde. Na outsource nechte sedět!

Evgeny Kuzin, vedoucí oddělení síťových projektů,LLC "Web Doctor"

1. Za prvé, backend Web Developer musí mít společnou zavazadel pro všechny vývojáře - inženýrské myšlení, schopnost zadat podstatu úkolu, rozkládat ji na komponenty a správně vybrat nástroje, které jej vyřeší.

Architektura webových aplikací se výrazně liší od architektury obyčejného aplikovaný software Za prvé, desítky zároveň, a někdy stovky uživatelů mohou pracovat s webovými aplikacemi. Izolace zákazníka od sebe, zabezpečení systému, výpočet zvýšení produktivity změnou systému a související architektonická a technická řešení je zcela spadána na ramena webových vývojářů.

Zadruhé je důležité, aby webový vývojář reagoval na rozvoj internetu, analyzovat technologie a použité nástroje.

Webový vývojář by se neměl bát zvládnout nové technologie, by mělo být snadné zvýšit (ve srovnání s kolegy - programátory aplikací) a být schopen jednat rychle.

2. Nevolám specifické programy, protože pro každé možnosti jednotlivých aspektů jsou možné.

Samozřejmě prohlížeč, se všemi rozšířeními nezbytnými pro analýzu, ověřování a manipulaci s prvky a skripty na webové stránce. Pak nástroje, které umožňují odesílání různých vlastních požadavků HTTP (protože 95% vývoje webu je protokol HTTP) a podrobně analyzovat provoz a výměnu dat a výměnu dat v detailu mezi klientem a serverem. Také backend webový vývojář potřebuje textový editorJe žádoucí s podporou použitých programovacích jazyků, ladění nástrojů, profilování a řízení verzí.

Samostatně stojí za zmínku nástrojů pro psaní nebo generování technické dokumentace. Dokumentace je dobrá, dobrá dokumentace také není špatná.

A samozřejmě, hlavní nástroje jsou hlavy a rovné ruce.

3. Je naprosto nezbytné znát ruštám, být schopen jasně a jasně uvádět vaše myšlenky při komunikaci s kolegy, a to jak písemně a ústně. Pro zbytek nevyžadujeme žadatele o povinném způsobu vyššího technického vzdělávání nebo dostupnosti všech certifikátů - vyřešit kvalitu práce a praktických znalostí.

4. Zde je stejný princip jako vzdělání. Zkušenosti, zkušenosti - bezpodmínečné klady, ale každého uchazeče zvažujeme individuálně.

5. Pokud hovoříme o rozvoji precizně pro internet, pak vývoj webu sám prezentuje vytvoření aplikace, která pracuje ve veřejném prostředí pro uživatele, jsou skutečné úmysly neznámé. Programování jakékoli akce, musíte se zeptat na otázky: Co když uživatel (útočník) automatizuje nekonečné provedení této akce? Co když vstupní data aplikace budou libovolně editovány? Že pokud se odkaz na tuto službu dostane dovnitř otevřený přístupBude přenášet přes im na jiného uživatele? Atd.

Na základě specifik naší činnosti často postupujeme na cestu k útočníkům a data, s nimiž pracujeme, jsou velmi zájem o určité kruhy, takže některé z našich webových aplikací vyžadují obzvláště důkladnou ochranu.

Nikolai Netherria, vedoucí nového vývoje, Badoo

1. Backend Web Developer v Badoo, stejně jako každý dobrý inženýr, by měl být schopen pochopit úkol a být schopen efektivně řešit v rámci dostupných technologií a nástrojů. Používáme PHP + MySQL, takže náš webový vývojář musí nejprve zdarma vlastnit PHP a SQL. Musí být zodpovědný a usilovat o to, aby se jeho práce mohla dodržovat termíny, porozumět výrobku / technické hodnotě úkolu, reagovat na konečnou kvalitu.

2. Základní sada je PHP, MySQL, Nginx, Git, Jira, IDE, oblíbený prohlížeč a příkazový řádek. Kromě toho máme velký počet různých nástrojů, systémů, knihoven, které se vývojáři používají všude, aby vyřešili určité úkoly. Některé z těchto nástrojů jsou k dispozici v otevřeném source, například Pinba je real-time PHP monitorovací agent, náš nástrojový formátovací nástroj je PHPCF, PHP blokování pro knihovnu Leptica.

3. Pokud osoba splňuje naše požadavky na dovednosti a znalosti, pak jsme připraveni mu nabídnout práci bez ohledu na jeho vzdělání.

4. Situace je podobná situaci vzdělávání: žádné přísné a formální požadavky.

5. Naše projekty mají velké publikum a dostatečně naložené PHP-backends. V píku zvládají až 50 tisíc požadavků za sekundu. V tomto ohledu věnujeme zvláštní pozornost tématu produktivity. Je nutné pochopit základní principy ukládání do mezipaměti, replikace, optimální práce s daty, optimalizaci spotřeby a distribuce zdrojů. Být schopen vidět a lokalizovat problém produktivity na libovolné úrovni.

Denis Streetov, vedoucí oddělení technologického rozvoje a údržba společnosti "NTC IT Rosa"

1. Kandidát na takovou pozici v NTC IT Rosa bude zapotřebí následujícími dovednostmi:

  • dobrá znalost Ruby na kolejích 4.x;
  • obeznámenost s vývojem řízeným chováním;
  • seznámenost se zásadami kolektivního vývoje - verze řídicích systémů, sledovače úkolů a tak dále;
  • zkušenosti s databázemi (relační a NOSQL);
  • zkušenosti s Slim / HAML;
  • znalosti a zkušenosti s JavaScript / Coffeescript;
  • znalosti CSS / SCSS.

2. V NTC IT Rosa pro vývoj webového vývoje v současné době používal rámec Bootstrap, stejně jako JavaScript rámec Angularjs. PostgreSQL a Redis se používají k ukládání dat. Vývoj na Ruby na kolejích se provádí v souladu s rozvojovým přístupem řízeného chování pomocí nástroje RSPEC Toolkit.

3. Přítomnost vyššího technického vzdělávání bude plus, ale v první řadě se nedíváme na diplom, ale na dovednosti a zkušenosti potenciálního kandidáta.

4. Zkušenosti je žádoucí od roku na roky v projektech, kde byly použity ty, které byly uvedeny v prvním pododstavci technologií (alespoň Ruby na kolejích).

5. Backend-webové vývojáři v NTC IT ROSA pracují hlavně nad vývojovým systémem ABF a montážní systém používaný k vytvoření našich hlavních produktů - distribuce linky LINUX OS a produkty v rámci tohoto operačního systému. Proto bude velká výhoda, pokud je kandidát na toto volné místo obeznámen s Linuxem a s montážními balíčky pro tento systém. Nebude dále seznámit s dalšími technologiemi používanými v ABF - virtualizaci (zejména LXC), konfigurační systémy managementu (například ansible) a systémy ukládání kódů (primárně git).

Sergey Kazantsev, Senior Developer, "Kaspersky Lab"

1. Becasend Developers jsou zodpovědní za kód provedený na webových serverech.

Vývojáři backend by tedy měli pochopit nejen programovací jazyky, ale i architekturu serverů, databází a protokoly interakcí sítě.

2. Vývojář musí znát alespoň jeden programovací jazyk na vysoké úrovni, rámec pro efektivní vývoj webu a webový server.

Oblíbené svazky mohou být:

  • C # + ASP.NET + IIS;
  • Java + Jarní MVC + Apache Tomcat;
  • Ruby na kolejích + Nginx;
  • Python + Django + Apache;
  • PHP + Apache;
  • ... nebo jejich kombinace.

Mnoho firemních webových služeb jsou postaveny na základě technologií společnosti Microsoft a platformy .NET, ale Ruby na kolejích, PERL, PHP se také aplikuje.

V arzenálu dobrého backend developera jsou vždy nástroje:

  • monitoring provozu: Fiddler, Wiresark;
  • profilování výkonnosti, požadavky na paměť a databáze;
  • rychlé vyhledávání Protokoly: grep.

3. Povinné dovednosti pro práci s databázemi, frontami zpráv a velkými projekty pro použití distribuované mezipaměti.

4. Požadované zkušenosti mohou záviset na pozici, kterou žalobkyně tvrdí: \\ t

  • 1 rok - Developer webu Junior;
  • 2-5 let - webový vývojář;
  • 5-7 + - Senior / vedoucí vývojář.

5. Specifické požadavky společnosti Kaspersky Lab mohou být přičítány znalostmi kryptografie, potenciálních hrozeb pro webové aplikace a způsoby, jak jim zabránit.

Ilya Kutukov, senior programátor, specialista na webové inženýrství v paralelách

1. Paralely jsou nyní otevřeně dvě volná pracovní místa pro takové specialisty - přední web backend developer (http://hh.ru/vacancy/12586616? //hh.ru/vacancy/12599030?Query\u003dparlels), takže víme přesně to, co chceme od takových specialistů. Rozumí se, že osoba přicházející k nám vlastní potřebné programovací jazyky a technologie pracovat dostatečně. Kromě kontroly kódování dovedností a celkového erudice, dáváme test na architekta - text, který je volně psaný a vědomě neúplný TK na vývoji systému. Dále, žádá kandidáta, aby se objasnil, že není mu jasné, jaké další otázky, které má a jak vidí hlavní složky systému, systém dat, jak se vše změní se zvyšováním zatížení, množství dat a kde lze zanedbávat.

2. Hlavní sada nástrojů - IDE (objasníme, že jsme v týmu dává přednost Pycharmovi), životním prostředí developera, to znamená, že sada programů, které z něj činí co nejvíce na plnění bojových serverů, ale stejný Čas se schopností rychle pochopit, co se děje, VC, hlavové skripty. Z zajímavých, relativně nových nástrojů, technologií a přístupů bych také rád zmínil "reaktivní" přístup (Akka, Rx. *, Apache Storm atd.), Který vyžaduje vývojář myšlení na úrovni zpráv, událostí a jejich modifikace. Stejně jako architektury mikroserváry, které jsou dobře doplňující jejich jazyky popisu rozhraní (Thrift, AVRO, PROTOBUFS, JSON SCHMA), které umožňují vytvářet smlouvy, pro které jsou data vyměněna.

3. Vzdělávání pro nás nehraje zásadní roli.

5. Máme backend vývojářům pracovat na takové funkčnosti jako paralely MyAccount, přístupový portál, desktopový portál, v řešení, jako je například Parallels Access (řešení) vzdálený přístup) A Parallels Desktop pro Mac (spuštění na machs různých operačních systémů a jejich aplikace bez restartu), s různými řešeními infrastruktury. Proto máme takovou specifičnost jako nulové prostoje a dobře, pokud osoba nejen chápe, jaké změny by měly být provedeny, ale také jak to udělat, ne ovlivňující uživatele.

Konstantin Kichinsky, odborník na strategickou technologii, Microsoft Rusko

1. Znalosti a dovednosti nezbytné pro backend Web Developer:

  • Síťová architektura, protokoly, komunikační kanály.
  • Technologický zásobník odpovídající projektu (například C #, .NET, ASP.NET nebo JavaScript / Sypertion + NodeJs) + řízení podkladový operační systém (například Windows / Azure + Powershell).
  • Automatizace nasazení a testování (včetně zatížení).
  • Porozumění cloud Class Hlavní poskytovatelé (Microsoft Azure, AWS), včetně poskytování škálovatelnosti služeb.
  • SDL a obecně bezpečnostní otázky (včetně šifrování a ověřování).

2. Nástroje: Visual Studio, Git + Zbytek závisí na procesech a technologickém zásobníku.

3. Vzdělávání: Profil (IT) + praktická zkušenost, uvítání kvalitních znalostí v konkrétních oblastech (také bezpečnost nebo zajištění tolerance systému).

4. Zkušenosti: Praktické zkušenosti v reálných projektech, včetně účasti na projektech OS.

5. Zvláštní požadavky: Azure.

Alexander Mountain, ředitel informační technologie Skupina Mail.ru.

1. Zaprvé musí znát backend - svůj hlavní programovací jazyk, databázi, principy organizačních serverových aplikací. Kromě toho potřebuje znalosti na webu: zařízení protokolu HTTP, možnosti CSS, alespoň elementární vlastnictví HTML a JavaScriptu. A konečně musí být dobrým vývojářem - být schopen ladit svůj vlastní a někoho jiného kódu, řádně používat klasické algoritmy, zvolte příslušné datové struktury.

2. Hlavním nástrojem je samozřejmě programovací jazyk. Jazyk definuje druhou úroveň nástroje Toolkit: Standard pro tento rámec Jazyk a knihovnické soupravy. Pak Go Databases: Nejčastěji MySQL nebo PostgreSQL - a NOSQL skladovací zařízení, jako je tarantool nebo redis.

3. Neexistují žádné formální požadavky na diplom během zařízení pro práci v Skupině Mail.ru. Je to mnohem důležitější pro skutečné dovednosti a projekty, ve kterých se zúčastnil. Skupina Mail.ru má dvě velké vzdělávací projekty: technický park na základě Mstu Bauman a Technosféra na základě IMC MSU, jehož cílem je dát studentům specifické dovednosti v oblasti vývoje webu.

4. Opět platí žádné formální požadavky, ale obecně lze říci, že vývojář se stává zcela nezávislý někde po dvou nebo třech letech zkušeností "druhé číslo".

5. Vývoj backend byl tradičně srdcem naší společnosti. Backend Developer by měl být ve všem - chytrý, kreativní, zodpovědný, elegantní, stejně jako dobrý týmový hráč a nejlépe s výkyvem kolem hlavy. Z technického hlediska je naše specificita, že většina backendu je napsána na C ++, a nikoli skriptovací jazyky - vysoké zatížení, které ji nutí.

Alexander Nedzelsky, Webové studio Web Studio Head

1. Pokud hovoříme o určitém kolektivním obrazu baskendového vývojáře, pak:

  • pochopení OOP, design šablon, znalost základních algoritmů a datových struktur;
  • držení jedné z programovacích jazyků (nebo několik);
  • zkušenosti s DBMS, znalostmi SQL;
  • pochopení principů projektování relačních databází;
  • zkušenosti s lidovými rámcami;
  • zkušenosti s systémy řízení verzí;
  • základní znalosti HTML, CSS, JavaScriptu;
  • schopnost nastavit testovací prostředí.

2. "Poznámkový blok" a hlavu na ramena. A pokud vážně, jakýkoliv IDE / editor a testovací oblast. Nástroje jsou obvykle vybrány v závislosti na předvolbách / úkolech / schopnostech.

3. Přísně vyšší technické.

4. Přítomnost dokončených a pracovních komerčních projektů.

5. Vyvíjíme webové aplikace, stránky a služby hlavně na PHP / MySQL. Zároveň používáme yii / symfony a 1C-bitrix pro standardní řešení. Proto jsou pro nás důležité relevantní zkušenosti a znalosti.

Eduard Gursky, technický vedení ve vnitřním vývojovém týmu, Jetbrains

1. Backend-Web Developer je ve skutečnosti osoba, která vyvíjí logiku serveru a uvědomuje si, který kontext bude proveden - v kontextu webových aplikací. Pokud jsou aplikace backend-webové aplikace realizovány v Javě, a ve většině případů je to tak, ve skutečnosti stejný specialista aplikuje všechny stejné požadavky na znalosti a dovednosti jako obvyklým vývojářem Java: znalost jazyka, chápání práce a zařízení hlavní knihovní komponenty Java SDK atd. Nicméně, zkušenosti jsou také přidány s různými webovými rámcy (zjednodušení implementace injekce závislosti, MVC atd.), Schopnost vyhodnotit a zlepšit výkonnost aplikace, jeho škálovatelnost. Je nutné vzít v úvahu a pochopit, jak rychle bude uživatelská aplikace obdrží výsledek serveru kód, stejně jako bezpečně a racionálně, další funkce serveru je racionální prostřednictvím prohlížeče uživatele.

Často backend webová aplikace vyžaduje integraci se službami třetích stran nebo export jeho funkčnosti jako externí API. Developer musí pochopit, jak jsou tyto úkoly realizovány, které protokoly a mechanismy se pro to používají.

Navzdory tomu, že taková osoba se zabývá především vývojem logiky aplikačního serveru, potřebu ladění nebo prototypování pomocí klientské části aplikace. Zde vyplývá, že je třeba pochopit provoz protokolu protokolu TCP / IP, protokoly HTTP, principy interakce prohlížeče s webovou aplikací, základní znalosti o rozvržení, Styly CSS, možnostem JavaScriptu.

2. Obvykle toto IDE pro rozvoj. Musíte také použít profiler k řešení úkolů produktivity, nadměrné spotřeby zdrojů atd. V našem týmu používáme nápad Intellij.

3. Neumožňujeme žádné formální požadavky na úroveň vzdělávání kandidátů. Důležitější zkušenosti, porozumění a inteligence, a samozřejmě motivace člověka.

4. Veškeré zkušenosti ve vývoji výrobních webových aplikací je samozřejmě plus. Znalosti a dovednosti popsané výše nemohou být přítomny odborníkovi v případě neexistence příslušných zkušeností. V rozhovorech se obvykle zajímáme o podrobnosti o účasti na různých projektech uvedených v životopisu s cílem posoudit zkušenosti, které by mohl být kandidát zakoupen prováděním takových úkolů. Specialista, který vyzkoušel různé přístupy a technologie, aby vyřešili podobné úkoly při vývoji webových aplikací, které mohou analyzovat výhody a nevýhody každého přístupu, je velmi zajímavý kandidát.

5. Je vítán zkušenost s vývojem aplikací s produktem Jetbrains. Všichni jsme ve společnosti se snaží využít naše produkty, protože jsou pohodlné a protože chceme, aby je ještě pohodlnější!

Také v poslední době praktikujeme vývoj webových aplikací v jazyce Kotlin. To dává řadu významných výhod a také způsobuje proces psaní kódu o to příjemnější. Touha kandidáta je vítána studovat nové jazyky a nové přístupy k implementaci webových aplikací.

Dmitrij ovchinnikov, webový vývojář
Natalia Beetle, náborář v sooo "herní proud" v Minsk Center pro rozvoj Wargaming

1. Backend Developer vyžaduje hluboké pochopení webu: od tvorby požadavku HTTP na straně prohlížeče před implementací komunikace Interseperson pomocí různých protokolů. Wargaming není jen "osobním účtem" hráče, ale také mnoho služeb poskytujících jednotnou ověřování, registraci, účast na programu doporučení atd.

Je také důležité mít inženýrské myšlení. V kombinaci s velkým technickým horizontem to umožňuje nabídnout efektivní řešení.

A samozřejmě ujistěte se, že napíšete kód kvality. Tvář programátoru je jeho kód. Znalost významných architektur a moderních programových vzorů je často povinná při práci ve velkém týmu nad komplexním projektu.

2. Ve wargamingu je stoh použitých technologií poměrně standard: hlavní pole webových projektů je vyvinuta na Pythonu, některé služby jsou napsány v PHP a další, kritické pro rychlé a paralelní výpočetní techniky, na Erlangu. MySQL se používá pro skladování, pro mezipaměť - memcached. Rabbitmq vybraný jako pneumatika zpráv ve společnosti. Z rámců - Django a zkroucené. Pokud hovoříme o přední části, pak se jedná o společný páteř / podtržení / jquery svazek.

Pokud jde o vývojové nástroje, v wargamingu dodržujeme pozici "Co je lepší pro vývojáře". Někdo používá moderní IDE, někdo pohodlnější cítí s VIM nebo Emacs. Nezáleží na tom, s pomocí které nástroje provádíme naši práci, pokud je výsledkem pohodlné a užitečné služby, které každý den dělají miliony hráčů po celém světě.

3. Nemáme formalizované požadavky na úroveň vzdělávání. Profil (technický, matematický) vzdělávání bude plus, protože naznačuje přítomnost základní teoretické přípravy kandidáta, ale je nepravděpodobné, že se stane rozhodným faktorem při vstupu do práce. Chápeme, že znalosti v oblasti matematiky, OOP, klasických algoritmů a datových struktur lze získat samostatně. Preference je dána kandidátům se zkušenostmi. Také schopnost uchazeče vyřešit inženýrské úkoly a provádět inženýrské řešení a ne jen napsat kód.

4. Požadavky na pracovní zkušenosti závisí na volném prostoru. Pokud zveme mladého specialisty, nejprve se podíváme na jeho "domácí projekty" a vysokoškolský vývoj. Musíme být přesvědčeni, že se k nám nepřišla náhodou, byla to vědomá volba, která může být potvrzena skutečnými příklady alespoň malých, ale dokončených projektů. Pokud jde o zkušený specialista - požadavky jsou specifičtější. Jsme důležití pro zkušenosti s více oblastmi: databází, Linux, webový server (Apache, Nginx), znalosti a porozumění systémům ukládání do mezipaměti (memcached), systémy zasílání zpráv (králičí) a zkušenosti s rámcové (Django, zkroucené). Zkušenosti s optimalizací projektů s vysokým zatížením budou velmi užitečné a umožní vám rychle připojit k procesu vývoje a pracovat s maximální efektivitou pro sebe a tým. Pro přední odborníky a odborníky, kromě výše uvedeného, \u200b\u200bje důležitý široký technický horizont a zkušenost s různými technologickými zásobníky.

5. Podpora webové infrastruktury pro obrovské množství hráčů Wargaming.net Universe znamená schopnost pracovat s vysokým zatížením a položit v aplikační architektuře schopnost provozovat velké množství Požadavky.

Kromě připravenosti pro Highload je důležité zapamatovat si bezpečnost. Webový vývojář v wargamingu je proto povinen vědět o mechanismech proti velkým hrozbám a zajistit spolehlivost svého kodexu.

Připravený Igor Strompel.

Superjob.ru Portál Výzkumné centrum, zejména pro "System Administrator" vystudoval nabídky zaměstnavatelů. Na pozici developera backend-webu nejsou dosud definovány speciální požadavky, které jsou především podobné skutečnosti, že jsou prezentovány programátorům.

Java programátor

TO
Telekomunikace
Průmysl
Výroba
Budova
Správa nemovitostí
Služby B2V. Prodej B2B. Prodej B2C.
I. I. 65 000 – 80 000 54 000 – 71 000 50 000 – 67 000 60 000 – 75 000 50 000 – 65 000 50 000 – 64 000
50 000 – 64 000 42 000 – 57 000 40 000 – 53 000 45 000 – 60 000 40 000 – 52 000 40 000 – 51 000
II. 80 000 – 90 000 71 000 – 87 000 67 000 – 85 000 75 000 – 90 000 65 000 – 83 000 64 000 – 87 000
64 000 – 72 000 57 000 – 70 000 53 000 – 68 000 60 000 – 70 000 52 000 – 66 000 51 000 – 70 000
III. 90 000 – 150 000 87 000 – 125 000 85 000 – 115 000 90 000 – 130 000 83 000 – 120 000 87 000 – 125 000
72 000 – 120 000 70 000 – 100 000 68 000 – 92 000 70 000 – 100 000 66 000 – 96 000 70 000 – 100 000
IV. 150 000 – 200 000 125 000 – 150 000 115 000 – 150 000 130 000 – 180 000 120 000 – 170 000 125 000 – 160 000
120 000 – 160 000 100 000 – 120 000 92 000 – 120 000 100 000 – 145 000 96 000 – 140 000 100 000 – 130 000
Cf. 125 000 110 000 100 000 115 000 115 000 110 000
100 000 88 000 80 000 92 000 90 000 90 000

Liché mzdové linky - střední MSK, dokonce - na St. Petersburg

Platový rozsah Požadavky a přání pro profesionální dovednosti
Rozsah I.
  • Neúplné vysokoškolské vzdělávání (technický / IT)
  • Vynikající znalosti HTML, CSS, Java, XML
  • Znalost objektově orientovaných programových principů
  • Znalost teoretických základů rozvoje databáze
  • Znalost angličtiny na úrovni technické dokumentace čtení
  • Java programovací zkušenosti ze šesti měsíců
Rozsah II.
  • Zkušenosti s webovými servery a aplikačními servery
  • Java programovací zkušenosti z 1 roku
Rozsah III.
  • Vyšší vzdělávání (technické / IT)
  • Šablony znalostí Design Java a J2EE
  • Zkušenosti pomocí speciálních nástrojů (hibernace, jaro, vzpěry atd.)
  • Zkušenosti ve vývojovém týmu
  • Zkušenosti s verzemi řídicí systémy
  • Zkušenosti s DBMS (MS SQL Server nebo Oracle)
  • Java programovací zkušenosti z 2 let
Rozsah IV.
  • Přítomnost kvalifikačních certifikátů
  • Zkušenosti design informační systémy a příprava projektové dokumentace
  • Zkušenosti s integračními řešeními (IBM WebSphere, Oracle Fusion Middleware)
  • Zkušenosti ve vývoji víceúrovňových aplikací
  • Java programovací zkušenosti z 3 let
Možné přání:
  • znalost angličtiny v kolečkové nebo volné úrovni
  • dovednostní manuální vývojářská skupina

Valery Chernetova připravený, superjob analytik vůdce


V kontaktu s

  • Převod

Tento seznam se objevil jako osobní poznámka na témata, kterou jsem diskutoval s kolegy a přáteli a ve kterých jsem chtěl pochopit hlubší ...

Nejsem velký milenec, abych se zeptal na technické otázky o rozhovorech: Pro mě je lepší sedět tolik s kandidátem (nebo kandidátem) na klávesnici přes nějaký skutečný kód, skutečný problém - a celý den se zapojit do Pár programování, je žádoucí střídavě se zbytkem týmu. Ale věřím, že některé technické otázky mohou být dobrým výchozím bodem pro začátek fascinujícího a příjemného konverzace a umožní navzájem hlubší.

V tomto úložišti se shromažďuje řada otázek týkajících se serverové části, které lze použít při kontrole potenciálních kandidátů. V žádném případě se nedoporučuje zeptat všechno Otázky k jednomu kandidátovi: Bude to trvat několik hodin a nedává smysl vůbec smysl, protože pokrývají příliš široký rozsah témat. Nikdo nemůže vědět všechno. Vyberte si nejrelevantnější sekci a nejzajímavější otázky k rozšíření konverzace.

Varování

Většina otázek je otevřená, někteří prostě ne Že jo nebo špatně Odpovědět. Naopak by měly být výchozím bodem konverzace, který by měl v myšlence lépe ukázat lidské schopnosti než jednoduchá odpověď. Osobně, obecně upřednostňuji otázky, odpovědi, na které jsem sám nevím.

Znovu zdůrazňuji, že to není dost na otázku. Na konci rozhovoru strávte dlouhou relaci párových programování: to je jeden z lepší možnostiRozumět stylu a přistupovat k sobě - \u200b\u200ba dát pochopení kandidátů, co očekávat od budoucího práce.

Tento projekt byl vytvořen podle vzorku "Otázky pro rozhovor pro práci Frornálu" od @darcyclarke.

Kde jsou odpovědi?

Dříve nebo později doplníme článek příslušnými odpověďmi. Byl bych vděčný za pomoc!

Otázky týkající se šablon návrhu:

Proč globální objekty a statika jsou zlé? Můžete zobrazit na příkladu příkladu?

Řekněte nám o ovládání inverze a jak zlepšuje organizační kód.

Právo DeMers (princip minimálního povědomí) uvádí, že každý programový modul musí mít omezené znalosti o jiných modulech a musí interagovat pouze s přímými "přáteli" (někdy je formulován jako "nemluví s cizími lidmi"). Můžete napsat kód, který porušuje tento princip? Proč je jeho špatná organizace a jak to opravit?

Active-Record je šablona návrhu, který podporuje implementaci funkcí pro sebe, například INSERT, UPDATE A DELETE a Vlastnosti, které odpovídají sloupci některé základní tabulky v databázi. Myslíte si a zážitek, jaká omezení a úskalí mají tuto šablonu?

Data-Mapper je šablona návrhu, která podporuje použití vrstvy měničů (mapy) pohybujících se dat mezi objekty a databází, současně zachování jejich nezávislosti od sebe a od samotného konvertoru. Na rozdíl od této šablony, v Active-Record, objekty přímo zahrnují operace pro uložení v databázi a vlastnostech odpovídající základním tabulkám v databázi. Máte názor na tyto šablony? V jakých případech dáváte přednost jedné z nich do druhého?

Proč když se podáván null často uvádějí "Chyba miliardy dolarů"? Chcete diskutovat o technikách, abyste tomu zabránili, například šablony objektu NULL prezentované v knize GOF nebo volitelné typy?

Proč je složení často lepší než dědictví?

Jaká je úroveň bezpečnosti (protikorupční vrstva)?

Singleton je šablona návrhu, která vytváří jednu instanci třídy pro jeden objekt. Napište správnou (nit-bezpečný singleton) není tak snadný. Snaž se?

Schopnost měnit implementaci bez ovlivnění klientské části se nazývá abstraktní prezentace dat (abstrakce dat). Napište příklad, který porušuje tuto vlastnost, a pak jej opravte.

Napište úryvek kódu, který porušuje princip DON "T se opakujte (suchý). Pak to opravte.

Jak se vypořádáte s poruchami pekla (závislost pekla)?

Proč je goto - je to zlo?

Zásada spolehlivosti je obecným pravidlem organizace kodexu, který doporučuje "Být konzervativní je, že posíláte, a liberální v tom, co přijímáte". Často je formulován jako "Být tolerantní čtenář a opatrný spisovatel". Chcete diskutovat o významu tohoto principu?

Diskuse separace - Princip návrhu pro separaci počítačový program Pro jednotlivé oblasti, z nichž každá je zodpovědná za jeho úkol. Existuje mnoho různých mechanismů pro oddělování odpovědností (použití objektů, funkcí, modulů nebo šablon, jako je MVC a podobně). Chcete diskutovat o tomto tématu?

Otázky týkající se organizace kódu (kódu Design):

Často se říká, že jeden z nejdůležitějších úkolů objektově orientovaného designu (a organizace kódu jako celku) je silná spojka a slabá. Co to znamená? Proč jsou tak důležití a jak je dosáhnout?

Proč ve většině jazyků začíná index pole od nuly?

Jak ovlivňují testy a TDD kód organizace?

Napište kód kódu, který porušuje princip Don "T se opakuji (suchý). Vysvětlete, proč má špatnou organizaci a správně.

Jaký je rozdíl mezi spojkou a spojením?

Co je refactoring?

Jsou komentáře v kódu užitečné? Někdo říká, že by se měly vyhnout, pokud je to možné, a ideálně nepotřebují vůbec. Souhlasíš?

Jaký je rozdíl mezi organizačním kódem a architekturou?

Proč jsou testy TDD napsané před kódem?

C ++ podporuje více dědičnosti a Java umožňuje třídě implementovat více rozhraní. Jaký účinek využívá těchto prostředků pro ortogonalitu? Existuje nějaký rozdíl v účincích mezi používáním více dědičnosti a více rozhraní? Existuje rozdíl mezi používáním delegace a dědictví? [Toto je otázka z knihy "Pragmatic Programmer" Andrew Khanta a Defvida Thomas]

Výhody a zápory ukládání logiky předmětu v uložených postupech.

Podle vašeho názoru, proč objektově orientovaná organizace dominuje tolik let na trhu?

Pokud má váš kód špatnou organizaci, jak to chápete?

Otázky v programovacích jazycích:

Vyprávět o. tři hlavní Nevýhody vašeho oblíbeného programovacího jazyka.

Proč zvyšuje zájem o funkční programování?

Co je to uzavření a co je to užitečné? Co je běžné s uzávěry a třídami?

Kdy je vhodné použít generika?

Co je funkce s vysokým obsahem? Pro co potřebují? Napište takovou funkci v libovolném jazyce.

Zapište cyklus, pak jej převést na rekurzivní funkci pomocí pouze neměnných struktur (tj bez proměnných). Popište to.

Co to znamená, když jazyk zvažuje funkce jako prvotřídní objekty?

Zobrazte příklad, když může být užitečná anonymní funkce.

Proč potřebujete jmenný prostor? Přijít s alternativou.

Řekněte nám o kompatibilitě Java a C # (nebo vyberte dva další libovolné jazyky).

Proč mnoho vývojářů nemá rád Java?

Co dělá dobrý jazyk dobrý a špatný jazyk - špatný?

Napište dvě funkce, jeden, který je uveden transparentní a další případné neopustné. Diskutujeme je.

Jaký je zásobník a co je to banda? Co je přetečení zásobníku?

Proč je důležité, aby funkce jsou prvotřídní objekty v jazyce?

V některých jazycích, zejména s funkčním přístupem, je povolena technika, která se nazývá srovnání se vzorkem. Znaží vás? Jak se mapování vzorku liší od designu spínače?

Proč v některých programovacích jazycích nejsou výjimky implementovány? Jaké jsou výhody a nevýhody tohoto přístupu?

Pokud je kočka zvíře, pak je to pravda, že Takecare - To je Takecare. ?

Proč v Javě, C # a mnoho dalších designérů jazyků nejsou součástí rozhraní?

V posledních letech hodně hluku kolem node.js. Jaký je váš názor na použití v jazyce backstand, který byl původně koncipován do práce v prohlížeči?

Představte si, že máte časový stroj a je tu příležitost vrátit se v určitém okamžiku v čase v historii jazyka Java (C #, Python, jít nebo něco jiného) a promluvte si s některými tvůrci JDK. Co byste se pokusili přesvědčit? Smazat řízené výjimky? Přidejte nepodepsané prvotitivní typy? Více dědičnosti?

Otázky rozvoje webu:

Proč jsou nativní soubory cookie a soubory cookie třetích stran zpracovávány tak jinak?

Jak byste zvládli číslování verzí API webových služeb?

Z hlediska backendu existuje nějaké nevýhody nebo překážky zavedení jednotných aplikací?

Proč se obvykle snažíme tolik, takže služba byla bez státní příslušnosti? Co je v kodexu bez státní příslušnosti tak dobré? Proč a když je skladování stavu (stav) špatný?

Odpočinek a mýdlo: V jakých situacích si vyberete jeden z těchto přístupů a v čem jiný?

Ve vývoji webu je přístupy řadiče modelu a model-view-view-model přístupy převážně podobné jak v Besende, tak vpředu. Co si představují a proč je vhodné použít?

Databázové otázky:

Jak posíláte aplikaci z jedné databáze do druhé, například z MySQL v Postgresql? Pokud musíte takový projekt řídit, jaké problémy očekáváte?

Proč databáze považuje hodnotu null jako takový zvláštní případ? Proč například v SQL Select * z tabulky, kde pole \u003d null nedává záznam s nulovým polem?

Kyselina je zkratka pro atomicitu, konzistenci, izolaci, trvanlivost (atomicita, konzistence, izolace, stabilita). Většina databázových motorů zaručuje tyto čtyři vlastnosti transakcí v databázi. Co o tom víš? Chcete vám říct víc?

Jak byste se vypořádali s převodem schématu DB, tj. Jak automaticky automaticky automaticky automaticky nastavíte, protože aplikace je vyvinuta z verze do verze?

Jak implementovat líné zatížení? Kdy je to užitečné? Co jsou podvodní kameny?

Takzvaný "N + 1 problém" se vyskytuje, když kód musí načíst podřízené prvky z "Rodiče-potomků" vztahu v Orm s línou botou, a proto zaslat žádost o rodičovský záznam a pak jeden požadavek na každou dceřinu . Jak vyřešit problém?

Jak najdete nejvíce nákladů v aplikaci?

Podle vašeho názoru je vždy nutné normalizovat databázi? Kdy je vhodné použít denormalizovanou databázi?

Jednou z metod nepřetržité integrace se nazývá modrozelený dluh. Skládá se na použití dvou průmyslových provozních prostředích, co nejvíce - a nasazeno v jednom z nich během druhého, a pak zabezpečit přepínání dopravy z jednoho prostředí do druhé po testování v pohodlném nastavení. Tato metoda je komplikovaná, pokud dluh zahrnuje změnu struktury nebo obsahu databáze. Chtěl bych s vámi diskutovat o tomto tématu.

Otázky na NOSQL:

Co je v kondenzaci nakonec (případná konzistence)?

A co teorém víček, uveďte příklady systémů CP, AP a CA.

Jak v poslední době vysvětlíte úroky z Nosql?

Jak NOSQL vyřeší problém škálovatelnosti?

V takovém případě dáváte přednost dokumentově orientovaným DBMS jako Mongodb místo relační DBMS, jako je MySQL nebo PostgreSQL?

Otázky týkající se verzi kódu:

Proč je implementace poboček v Mercurial nebo Git snadnější než v SVN?

Jaké jsou výhody a nevýhody řídicích systémů distribuovaných verzí, jako je git, ve srovnání s centralizovaným VCS jako SVN?

Můžete popsat proud a gitflow workflow gitub?

Co je rebase (tah)?

Proč je fúze snazší cvičit v Mercurial nebo Git než v SVN a CVS?

Otázky týkající se paralelismu:

Proč potřebujete paralelnost? Vysvětlit.

Proč je to tak těžké otestovat multi-závitový / paralelní kód?

Jaký je stav závodu? Napište příklad na libovolný jazyk.

Co je vzájemné blokování? Můžete napsat nějaký kód, který trpí vzájemnými zámky?

Co je hladu zdrojů (proces hladovění)? V případě potřeby zvažujeme jeho definici.

Jaký je algoritmus synchronizace bez blokování bez očekávání (algoritmus bez čekání)?

Otázky týkající se distribuovaných systémů:

Jak otestovat distribuovaný systém?

V takovém případě použijete asynchronní komunikaci mezi dvěma systémy?

Jaké jsou hlavní podvodní kameny procedur z dálkové výzvy?

Pokud vytvoříte distribuovaný systém pro škálovatelnost a spolehlivost, jaké různé problémy se mohou vyskytnout v uzavřeném a bezpečném prostředí sítě - a v geograficky distribuovaném a veřejném systému?

Jak zajistit toleranci chyb webu? Desktopová aplikace?

Jak se vyrovnat s poruchami v distribuovaných systémech?

Promluvme si o různých přístupech k obnově pracovní kapacity (odsouhlasení) po porušení síťového připojení.

Jaké jsou mylné představy o distribuovaných výpočtech?

Při použití požadavku / odpověď a při publikování / Přihlásit se?

Předpokládejme, že systém, se kterými pracujete, nepodporuje transakcentu. Jak byste ho realizovali od nuly?

Otázky týkající se softwaru životního cyklu a manuálního týmu:

Jaká je flexibilita (agilita)?

Jak budete pracovat s starším kódem?

Řekni, že jsem váš projektový manažer a ne odborník v programování. Snažte se mi vysvětlit, co je to starší kód a proč se musíte postarat o kvalitu kódu.

Jsem výkonný ředitel vaší společnosti. Vysvětlete mi Kanbanovi a přesvědčte vás, abyste do něj investovali.

Jaký je hlavní rozdíl mezi flexibilním rozvojovou metodou a kaskádovým modelem?

Být lídrem skupiny, jak vyřešíte problém příliš mnoho setkání?

Jak se vyrovnáte s projektem, který je prováděn se silným zpožděním?

"Lidé a interakce jsou důležitější než procesy a nástroje" a "Spolupráce se zákazníkem je důležitější než harmonizace podmínek smlouvy", je polovina hodnot vyhlášených v agilním manifestu. Diskutujeme je.

Řekněte nám, jaká rozhodnutí budete mít, kdyby byl technický ředitel vaší společnosti.

Existují nějaké výhody z programových manažerů?

Proveďte pracovní rozvrh, pomocí flexibilního plánu (tj. Bez instalovaného pracovní doby) a zájmové politiky "Vezměte při potřebu".

Jak byste zvládli velmi velké výuky a přesvědčit vývojáře, aby neopustili tým bez zvýšení platu? Jaká dobrá může společnost udělat, aby zůstali?

Jaké jsou tři hlavní kvality, které hodnotíte v kolegách kromě programování?

Jaké tři hlavní věci o programování potřebují znát humanitní obory, podle Vašeho názoru?

Představte si, že společnost vám poskytuje jeden měsíc a rozpočet na zlepšení kvality každodenního života vás a vašich kolegů. Co bys dělal?

Otázky týkající se logiky a algoritmů:

Napište fifo fronty pomocí pouze hromadných lifu. Pak vytvořte zásobník LIFO pomocí pouze FIFO fronty.

Napište fragment kódu přetečení vyrovnávací paměti.

Napsat faktorianti s ukončenou rekurzou.

V libovolném jazyce napište repl, který okamžitě zobrazí zadané hodnoty. Vylepšete jej do kalkulačky RPN.

Jak byste navrhl využití pro defragmentaci?

Napište program, který generuje náhodné labyrinty.

Napište příkladový kód, který vytváří únik paměti.

Generovat sekvenci jedinečných náhodných čísel.

Napište příklad jednoduchého systému sběru odpadu.

Napište jednoduchý makléř zpráv v libovolném jazyce.

Napište velmi jednoduchý webový server. Proveďte plán funkcí, které musí být realizovány v budoucnu.

Jak třídit 10 GB soubor? Jak se dostanete k provedení změn na soubor 10 tb?

Jak najdete program Duplicate Files?

Otázky týkající se architektury na:

Když nezabývá mezipaměť a dokonce i poškozuje?

Proč událost orientovaná architektura zlepšuje škálovatelnost?

Co dělá kód čitelný?

Jaký je rozdíl mezi vývojem designu (vznikající design) a evoluční architekturou?

Horizontální a vertikální škálování: Co se liší? Kdy použít jednu věc a kdy je jiný?

Jak pracovat s zachycením řízení v selhání (převzetí služeb při selhání) a relací uživatele?

Co je CQRS (Segregace Query Query Query)? Jak se liší od starého principu oddělení dotazů příkazů?

Co je to tříúrovňová architektura?

Jak navrhneš softwarový systém s škálovatelností?

Jaké strategie vyřešit problém C10K?

Jak navrhnout decentralizaci (I.e. Bez centrálního serveru) P2P systému?

Proč není CGI zmenšen?

Jak chrání vaše systémy od vazby na dodavatele (Dodavatel Lock-In)?

Jaké jsou nedostatky šablony návrhu "vydavatele-účastník" při škálování?

Co se stalo od 80. let ve vývoji procesorů, proč je důležité pro programování?

V jaké fázi životního cyklu by mělo zvážit výkon a jak?

Jak se problém odmítnutí neúspěchu nemusí objevit kvůli útoku DOS, ale kvůli špatnému designu nebo kvůli problému architektury?

Jaký je vztah mezi výkonem a škálovatelností?

Kdy je přijatelné použít silnou angažovanost (těsné spojení)?

Jaké vlastnosti by měl být systém zveřejněn, aby šel do cloudu?

Má jednota návrhu země architektů? Jednoduše klade: Může dobrý design z kolektivního úsilí všech vývojářů?

Jaký je rozdíl mezi designem, architekturou, funkčností a estetickými vlastnostmi? Promluvme si to.

Otázky týkající se architektury orientované na servis a mikrořice:

Proč v SOA Long transakce nejsou povzbuzovány, a místo toho jsou pozváni, aby používali SAGA?

Jaký je rozdíl mezi SOA a MicroService?

Promluvme si o číslování verzí webových služeb, kompatibilitou verzí a kritických změn, které rozbijí zpětnou kompatibilitu.

Jaký je rozdíl mezi transakcí a kompenzační operací v SAGA, v SOA?

Kdy je mikroservice příliš mikro?

Jaké jsou klady a nevýhody architektury MicroService?

Bezpečnostní otázky:

Jak napsat zabezpečený kód? Podle vašeho názoru je to odpovědnost developera nebo by to mělo být samostatný odborník ve společnosti? A proč?

Proč říkáte, že byste se neměli snažit vymyslet ani navrhnout vlastní kryptografii?

Co je dvoufaktorová autentizace? Jak jej implementujete ve stávající webové aplikaci?

Pokud pečlivě nezvládnete protokoly, je vždy riziko, že tam přijdou důvěrné informace, včetně hesel. Jak zabráníte takový problém?

Napište úryvek kódu podléhající injekci SQL a opravte jej.

Jak mohu najít zranitelnost pro SQL-injekce metodou statické analýzy kódu? Nejsem čekat, že budete psát hotový algoritmus, protože je příliš velký, ale diskutujeme o obecném přístupu.

Co víte o skriptování křížového místa? Pokud si nepamatujete, uvidíme se jeho popis na internetu a mluvit o tom.

Co víte o křížovém dotazu falešný? Pokud si nepamatujete, uvidíme se jeho popis na internetu a mluvit o tom.

Jak funguje https?

Jaký je útok "muž uprostřed"? A proč https pomáhá chránit proti němu?

Jak můžete zabránit krádeži relace uživatele? Nejpravděpodobněji si pamatujete, jaké krádeže je relace nebo soubory cookie, jinak na toto téma přečeteme stránku Wikipedia.

Obecné otázky:

Proč je důležité fungovat programování? Kdy mám použít jazyk funkčního programování?

Jak se společnosti jako Microsoft, Google, opera a Mozilla vydělávají na prohlížečích?

Proč otevření zásuvky TCP má velkou režii?

Co je důležité použít zapouzdření?

Jaký je systém v reálném čase a jak se liší od běžného systému?

Jaké je spojení mezi programovacími jazyky v reálném čase a alokace paměti v hromadě?

Beze změny je praxe jediného nastavení hodnot v době vytváření objektu a tyto hodnoty se pak nikdy nezměnou. Jak nepodporuje neměnnost napsat bezpečnější kód?

Výhody a nevýhody proměnlivých a neměnných hodnot.

Jaká je objekt-relační mezismat (objekt-relační impedance nesoulad)?

Jaké zásady se vztahujete k určení velikosti mezipaměti?

Jaký je rozdíl mezi TCP a HTTP?

Jaké jsou kompromisy výběru vykreslování na straně klienta a na straně serveru?

Jak vytvořit spolehlivý komunikační protokol založený na nespolehlivých?

Vynálezce nulového ukazatele Tonyho Hoar kdysi řekl: "Můžu to nazvat chybou mých miliard dolarů," protože bude přitahovat "nespočet chyb, zranitelnosti a systémové selhání, což pravděpodobně způsobilo utrpení a poškození miliard dolarů za posledních čtyřicet let . " Předpokládejme, že chcete eliminovat možnost použití nulových ukazatelů ve vašem programovacím jazyce: Jak se rozhodnete takový úkol? Jaké důsledky mohou mít?

Otevřené otázky:

Proč lidé odolávají změnám?

Vysvětlete koncept nití s \u200b\u200bbabičkou.

Jako vývojář budete současně chtít a aplikovat inovace a předvídatelné. Jak mohou tyto dva cíle existovat společně mezi sebou ve stejné strategii?

Co dělá dobrý kód dobrý?

Vysvětlete, jak se provádí vysílání streamování a jak jej implementujete.

Předpokládejme, že vaše společnost vám dává jeden týden ke zlepšení života pro vás a kolegy: Jak tento týden používáte?

Co jste zjistil minulý týden?

V každém provedení existuje estetický prvek. Otázkou je, tato estetika je váš přítel nebo nepřítel?

Jméno posledních pěti knih, které čtete.

Jak budete implementovat nepřetržitý přístup k doručení ve velké úspěšné společnosti, pro který přechod z kaskádového modelu k nepřetržitému přístupu k nepřetržitému dodávce není triviální vzhledem k jeho velikosti a obchodní složitosti?

Kdy má smysl znovu objevit kolo?

Promluvme si o vynálezu koleček ANEW, syndromu odmítnutí rozvoje někoho jiného a praxe používání společnosti nebo tým vývojářů vlastních služeb a produktů (jíst vaše vlastní jídlo).

Co nejprve automatizujete v aktuálním pracovním postupu?

Jaké jsou potíže písemně software? Co je obtížné podporovat software?

Dáváte přednost práci na zcela nových projektech (Greenfield) nebo pokračovat v aktuálním (brownfield)? Proč?

Co dělá operační systém, když není žádný příkaz pro provedení konkrétního kódu a vypadá neobsazený? Chtěl bych zahájit konverzaci o přerušení, démonech, podkladových službách, průzkumech, zpracování akcí atd.

Vysvětlete Unicode nebo transakce v DBMS pětiletého dítěte.

Uveďte argumenty ve prospěch monolitické architektury.

Co to znamená být "profesionálním vývojářem"?

Programování je umění, řemeslo nebo inženýrství? Váš názor.

Proč korporace horší zavádějící inovace než spuštění?

Váš poslední úspěch jste pyšný?

Otázky s fragmenty kódu:

Jaký je výsledek provedení této funkce JavaScript?

Funkce HookupVents () (pro (var I \u003d 0; i< 3; i++) { document.getElementById("button" + i) .addEventListener("click", function() { alert(i); }); } }
A co mazat typy, které dá takový Java kód a proč?

ArrayList. Li \u003d nový arraylist (); ArrayList. Lf \u003d New ArrayList (); if (li.getClass () \u003d\u003d lf.getClass ()) // vyhodnocuje opravdový systém.out.println ("EQUAL");
Můžete detekovat únik paměti?

Veřejná třída Stack (prvky soukromých objektů; Private Int Size \u003d 0; Soukromý statický final INT Default_initial_capacity \u003d 16; veřejný stack () (prvky \u003d nový objekt;) veřejný neplatný push (objekt e) (essurecapacity (); prvky \u003d e;) Public Object POP () (pokud (velikost \u003d\u003d 0) hodit nový prázdnýStakeXException (); návratové prvky [- velikost];) / ** * Essionový prostor pro alespoň jeden další prvek, zhruba * zdvojnásobení kapacity pokaždé, když potřebuje kapacitu pěstovat.
Můžete se zbavit přepínače spínače a psát více objektově orientovaného kódu?

Veřejná třída Formatter (soukromý servis servisu; veřejný formatter (služba;) Public String Dothejob (String TheInput) (řetězec reakce \u003d Service.askforpermission (); Přepínač (odpověď) (Case "Fail": Return "Chyba"; Case "OK" : Return String.Format ("% S% S", TheInput, TheInput); výchozí: Návrat null;))))
Můžete se zbavit operátorů a psát více objektově orientovaného kódu?

Veřejná třída TheService (soukromý závěrečný soubor FileHandler FileHandler; Soukromá závěrečná foorepository foorepository; veřejný theservice (FileHandler FileHandler, foorepository FoorePository) (This.fileHandler \u003d FileHandler; this.foEreoOrpository \u003d foorepository;) Public String Execute (finální řetězec souborů) (finální řetězec Rewritteneurl \u003d FILEHANDLER.GETXMLFILEFROMFILENNAME (soubor); finální sestava řetězce \u003d FILESHANDLER.GETEExtionIntIxtionIntImfilename (soubor);, pokud ((spuštění \u003d\u003d ") || (repritteneurl \u003d\u003d") ); pokud (vratná fo \u003d\u003d null) (návrat "";) návrat značeníStfoo.dothat (soubor);))
Jak udělat refaktoring takového kódu?

Funkce () (Chyba HRESULT \u003d S_OK; pokud (uspěl (Suceded1 (Operation1 ()) (pokud (uspěl) (Succeeded)) (pokud (uspěl (uspěl) (uspěl) (Succeeded)) (pokud (uspěl) (Chyba \u003d operace3failed;)) else (chyba \u003d operace2failed;)) else (chyba \u003d operace1failed;) chybu návratu;)

Back-end developer (z angličtiny. Developer back-end (reverzní strana) Jedná se o specialista, který se zabývá administrativní součástí webové aplikace, interního systému, serverové technologie - databáze, architektura, softwarová logika. Profese je vhodná pro ty, kteří mají zájem o informatiku (viz výběr profese pro zájem o předměty školy).

BEC-END Developer je neviditelný přední bojovník.

Moderní stránky, webové aplikace a hry se staly velmi složité, takže celý tým odborníků pracuje na nich. Chcete-li vytvořit plné, překrásné, funkční a uživatelsky příjemné místo, je zapotřebí konzistentní práce vývojářů předního konce a back-end. To je rychlá práce vytvořit webovou stránku nebo webovou aplikaci a usnadňuje jeho službu.

Figurativně řečeno, back-end vývoj je vytvoření automobilového motoru, zatímco vývoj předního konce je vytvoření návrhu a funkcí řízení stroje. Back End Developer pracuje v úzkém spojení s vývojářem front-end, přijímající informace o uživateli z něj a vrácení výsledného výsledku.

Základní nástroje Back End Developer - programovací jazyky serveru: například PHP, Python, Ruby, Java, Perl, uzel JS (Softwarová platforma). Kromě uzlu JS je užitečné naučit se Express (knihovna pro interakci v platformě uzlu JS serverem) a mongo db (databáze pro získání a ukládání informací).

Tak jako další prostředky Symfony, Codeigniter, Yii, Zend Framework, Kohana atd. Používají se pro ukládání dat pomocí MySQL / SQLITE.

Funkce povolání

Moderní vývojáři nejenže psát kód pro programy. Opracované programáře 10-15 lety. V současné době je takový termín nevhodný, protože v práci je často možné bez psaní kódu, jednoduše připojit hotové díly do jediné konfigurace. A programátoři se nyní nazývají "vývojář" nebo "inženýr".

S vývojem IT-sféry se projekty stávají složitějšími a jsou návrhářem, který lze shromáždit pomocí hotových řešení (frameworks) pro téměř všechny úkoly.

Pro-end funkčnost vývojáře tedy vypadá takto:

  • návrh architektury služby;
  • vytvoření jádra stránek;
  • vývoj platformy a hlavní funkční;
  • práce s kódovou architekturou;
  • vývoj aplikací, které podporují uživatelské rozhraní a bezpečnost;
  • kontrola nad stavem serverů (boj, test a pracovník);
  • kontrola verzí, databází, kontinuální integrace.

Pros a nevýhody povolání

High-playing a požadovaná profese.

Místo výkonu práce

Rozvojové společnosti, webové aplikace, mobilní aplikace.

Důležité vlastnosti

  • analytická mysl
  • logické myšlení
  • iniciativa
  • schopnost plánovat a dodržovat plány
  • týmová dovednosti
  • flexibilita myšlení
  • odpovědnost, vytrvalost, účelnost
  • zaměřit se na výsledek a kvalitu
  • touha neustále studovat novou a její aplikaci ve své práci

Profesionální znalosti a dovednosti

Znalost alespoň jednoho programovacího jazyka: Go, C, C ++, Perl, Python, PHP, Ruby, Java.

  • schopnost psát rychle, krásný a správný kód;
  • znalost populárních webových přenosníků (Django, baňka, jaro);
  • databáze designu dovedností a optimalizace požadavků;
  • znalost moderních programovacích paradigmatu;
  • znalost konstrukčních vzorů;
  • pochopení webových služeb, rozhraní;
  • angličtina pro čtení technické dokumentace.

Kde se učit od back-end developer

Vlaky (osobně, Moskva). Mezinárodní vzdělávací instituce se specializovat na počítačové vzdělávání. Práce od roku 1999. 42 poboček v 16 zemích světa. Největší autorizovaný vzdělávací centrum Microsoft, Cisco, Autodesk. Studenti dostávají mezinárodní certifikáty a mezinárodní diplom. Hlavním cílem je zaměstnání každého absolventa.

Vysokoškolské vzdělání:

Aby se stal skutečným profesionálem v oblasti vývoje back-end, je nutné mít základní profilové vzdělávání, které lze získat na následujících univerzitách:

Je však důležité si uvědomit, že základní vzdělávání univerzity klade nadaci pro vzdělávání, ale nestačí pro současné znalosti moderní technologie. Proto je v této oblasti důležitá samosprávnost, aby se na všechny nové technologie a nástroje. Na tahu však nedostatek profilového vzdělávání ovlivňuje v tu chvíli, kdy něco přestane pracovat a člověk nerozumí - za jaký důvod. Specialista se základními vzděláváním samozřejmě neví všechno, ale má hlavní dovednost - kde najít a jak používat potřebné znalosti.

Moderní zaměstnavatelé zpravidla nestanoví formální požadavky vysokoškolské vzdělání Kandidáti pro kancelář. Pro ně nejdůležitější zkušenost, inteligence, motivace specialisty.

Warry platba (kolik back end developer vydělává)

Plat dne 09/16/2019.

Rusko 40000-100000 ₽

Moskva 80000-300000 ₽

Schody kariéry a perspektivy

Z pozice back-end developera, po rozvoji dovedností developerského předního konce, přímou cestou k vývoji full-stack. Pro další růst je nutné se neustále poučit z nového: studie podrobně rozvojové technologie softwarové produkty, konfigurace a konfigurace servisních systémů.

Přechody v rámci oddělení jsou někdy příbuzní jinak. Někdo je prostě známý vidět jakékoli změny kariéry v rámci jedné společnosti přes hranol pro vysílání příspěvků. Někdo nepovažuje za to, že je možné změnit rozsah činnosti, i když je sousedí s aktuálním. Za třetí, v zásadě jsme přesvědčeni, že přechod z oddělení v oddělení znamená, že osoba má postavení "buď ryby, ani masa, a je nepravděpodobné, že by bylo dosáhnout něčeho významného.



Současně se někteří zaměstnavatelé vítají v každém směru a zvážit něco jako pojistka z vyhoření - osoba se změní zaměření pozornosti, změní oddělení nebo oddělení, ale nezmění samotnou práci jako celek.


Jmenuji se Kostya a pracuji v Qiwi téměř 4 roky. Dnes vám řeknu, jak úspěšně přepnuto z vývoje frontend v backendu.

Frontend

V Qiwi, od konce roku 2014 jsem začal pracovat jako vývojář aplikací IOS, a v zásadě se několik let zabývalo rozvojem peněženky Qiwi. Zároveň nemohu říci, že to bylo nudné - úkoly byly zcela odlišné a ve stejné aplikaci: Zabývali jsme se integraci peněženky s jinými službami, pomstila chyby, utáhla animaci. Kromě toho došlo k pokročilému zkušenosti s vytvořením aplikace pro Apple Watch. Pak se rozšířila trochu zaměření a pracovala i přes AOS aplikaci pro "svědomí".



A pak jsem se začal pohybovat pomalu do zády. Pokud jde o flexibilní metodologii, to je dokonce pohodlné - přepnul jsem, v prvním sprintu mohl udělat nějaký druh bakendových úkolů a ve druhém k \u200b\u200bprovedení integrace API, které jsem napsal.


Ale v backendu, v té době tam bylo příliš málo vývojářů a příliš hefty backot, takže na konci jsem ještě přešel na backend úplně. Co dělám teď, je klasické úkoly backenderu - píšu kód v naší mikroservice, Chiny Bugi, jsem zapojen do refaktoringu, pochopím Kotlin. Existuje příležitost pracovat na čerstvém produktu společnosti - QIWI Investor.


Mimochodem, nemůžu říct, že pro tyto dva roky se ukázalo, že jsem se vpředu vpředu, jasně jsem si uvědomil, že tam bylo také tam, kde se rozvíjet. Například, vidím, co se děje v mobilním vývojovém týmu, a chápu, že bych tam zůstal, i nadále růst s kluky.


Takže zde byla situace win-win - chtěl jsem pomoci týmu a produktu (výhoda ve vývoji nebyla velmi vůči backendům) a získávají nové znalosti. Timlids pochopil všechno a nechal mě jít bez jakýchkoliv stížností a také produkty.


Kromě toho, že znalosti, které jsem chtěl diverzifikovat, aby nebyli připojeni k jedné platformě (Android, nemám rád trochu, ale Apple stále dává pozici). No, v případě, co má být schopen vzít a učinit aplikaci pro sebe (a přední a podklad), pokud se náhle objevuje nějaký chladný nápad. Tak to však nebylo užitečné.

Backend.


První problém, se kterými narazíte na takový přechod je samozřejmě v zápase. V mém případě se jedná o některé jemnosti práce s databázemi, ale to pomohlo zde jak schopnost samo-vzdělávat a tým - kluci citliví a vždy připraveni pomoci a vysvětlit něco podrobně. V Qiwi, v zásadě, s učením v jakýchkoliv fázích je vše v pořádku, ať už jste alespoň junior na samém počátku práce, přinejmenším to je, jak se rozhodnout a změnit sféru o několik let později.


Nikdo nebyl naštvaný, že poprvé jsem samozřejmě nepracoval ne tak účinně, protože v hodně bylo nutné vstoupit (ale v dlouhodobém horizontu je tým stále ve vítězství).


Samozřejmě, že jsem měl trochu zkušeností v různých oblastech - mobilní hry a web, ale bylo to všechno, spíše se snaží cítit jejich vlastní, spíše než bodavé praktické vážné zkušenosti.

Dojmy z backendu po frontend

Žádná práce s UI. Vůbec. Dříve jsem musel zabít čas na opravu chyb v UI, teď ne. Nevýhody takové pozice - koncový uživatel nevidí výsledky konkrétně mé práce, jak to bylo s přední stranou. Snažil jsem se zjistit, co je těžší - podpora nebo vpředu, a uvědomil si, že (osobně pro mě) byl těžší, aby vždy pracoval s multithreadingem a síťovým stackem. A tady už není tak důležité - jste pro přední nebo pro zadní stranu. Na přední straně jsem se poprvé setkal s těmito úkoly, bez přípravy a na backend, s jakýmikoli zkušenostmi.


Je možné získat zkušenosti a dělat něco v pohodě v jakékoli oblasti, by existovala touha a předpoklad, existují praktiky zde - dělat něco (a dělat dobře), a že to fungovalo bezpečně a snadno podporovalo. A pro backendend není tak kritický pro přítomnost nebo nepřítomnost zkušeností v přední části. Pokud vývoj bere v úvahu všechny malé věci, váhá rohový případ a jako celek chápe, jak jeho API bude používat, pak to udělá vše, jak by to mělo.


Je pro mě snazší zjistit možné problémy Jen proto, že znám vlastnosti realizace našich mobilních aplikací. Ale to není nějaký druh superponie - to je soubor znalostí, že jakýkoli jiný beckened, který často pracuje s frontami.

To nakonec

Vývoj backend se pro mě stal dalším dobrým zážitkem - naučil jsem se napsat kód a revw, přemýšlet o architektuře. Je to vlastně zajímavé.


Ale zároveň se snaží žít, že přední strana je, že zpátky, neřeknu, že v případě, kdy by backend okamžitě vybral na samém počátku kariéry. Je pro mě stále důležité vidět a pochopit, jak můj produkt vnímá uživatele. S backendem je to všechno strašidelné.


Nejpravděpodobněji si volba sféry teď bych šel do gamedevu nebo webové fronty. Web stále zůstává dobrou platformou pro spuštění nových produktů a zároveň přestal být hrozné a těžké pochopit. Všechny tyto tutoriály ze spaghettiho kódu a callback-peklo zůstaly daleko za sebou, naštěstí.

Frontend je vývoj uživatelské rozhraní a funkčnost, která pracuje na straně klienta webových stránek nebo aplikace. Tento typ vývoje může být přiřazen všemu, co uživatel vidí, otevírá webovou stránku. Vývojář frontend spolupracuje s návrháři, programátory a UX analytikům, aby vytvořili pohodlný a požadovaný produkt.

Aby bylo možné jasně pochopit, co je vývoje frontend, otevřete stránku jakékoli stránky - zobrazí se rozhraní před vámi. Kliknutím pravým tlačítkem myši, můžete zobrazit kód této stránky v prohlížeči.

Tento kód je příkladem vývojáře frontend, je stažen do prohlížeče uživatele a můžete ji vidět s vlastníma očima. Kód stránky popisuje vše, co vidíte před sebe: barvy, rozložení, písma, umístění grafických prvků a tak dále.

Vývoj předního financování zahrnuje:

  • HTML (Hypertext Markup Language) - Jazyk označení dokumentu, se kterým je struktura stránky vytvořena: titulky, odstavce, seznamy a tak dále;
  • CSS (kaskádové styly) - Jazyk pro popis a stylizace externí pohled Dokument. Díky CSS Code, váš prohlížeč chápe, jak zobrazit prvky. CSS Určuje barvy a parametry písma, určuje, jak budou umístěny různé bloky stránek a tak dále. To také umožňuje vysílat stejný dokument v různých stylech, například pro tisk (konvenční nebo braillova písmo), výstup na obrazovku nebo čtení hlasu;
  • JavaScript. - Toto je jazyk, který byl vytvořen, aby se oživila webové stránky. Jeho úkolem je reagovat na uživatelské akce, zacházejte kliknutí myši, přesuňte kurzor, stisknutí kláves. Odesílá také požadavky na server a načte data bez restartování stránky, umožňuje zadat zprávy a mnohem více.

Co je to backend-vývoj?

Vývoj backend je soubor hardwarového softwaru, s jakou je implementována logika webu. Jednoduše řečeno, to je to, co je skryté z oka uživatele a vyskytuje se mimo jeho prohlížeč a počítač.

Například při zadání požadavku na stránku Hledat stránku a klepněte na klíč Enter.Dopředu končí a začne backend. Váš požadavek je odeslán na server. Google nebo Yandexkde se nacházejí vyhledávací algoritmy. Je to tam, že se stane všechny "magie". Jakmile informace, které jste hledali, se na monitoru objevil návrat do zóny frontend.

A velkým serverem je stejný počítač, pouze silnější. Ukládá data a reaguje na požadavky uživatele.

Backend je proces kombinování serveru s uživatelem.

Backend Developer může aplikovat všechny nástroje dostupné na serveru. Má právo vybrat si například některý z univerzálních programovacích jazyků, například Ruby, PHP, Python, Java.

Také pro použitý vývoj backend různé systémy Správa databáze:

  1. Mysql;
  2. PostgreSQL;
  3. Sqlite;
  4. Mongodb.

V závislosti na typu výrobku se mohou měnit povinnosti backend developer. Takový specialista může vytvářet a integrovat databáze, zajistit zabezpečení, vytvářet technologie. rezervní kopie a zotavení.

Jak vzájemně ovlivňují dopředu a backend?

Frontend a Backend Interacts v kruhu: frontend vysílá informace o uživateli v backendu, zpracovává se a vrátí se zpět, přičemž jasný formulář.

Různé specialisté jsou zpravidla zapojeni do těchto typů práce, ale je žádoucí pochopit zásady, pro které kolegové fungují. Návrhář rozhraní je například důležitý alespoň obecně, aby věděl, co je backetem projektu, ke kterému se zabývá. To mu pomůže dostatečně ocenit, jaké technické kapacity mohou být na místě nebo aplikaci.

Existuje několik možností pro interakci frontend a backend:

  • HTTP požadavek je přímo odeslán na server, server hledá informace, vložte jej do šablony a vrátí se jako stránka HTML;
  • Možnost pomocí nástrojů Ajax (Asynchronní JavaScript a XML). V tomto případě požadavek odešle JavaScript.Staženo do prohlížeče a odpověď přichází ve formátu XML nebo JSON;
  • Jednotné aplikace, které stahují data bez aktualizace stránky. To je také provedeno, kdy pomoc ajax. nebo Freymvorkov. Úhlové a cíhé.;
  • Ember. nebo knihovna Reagovat Pomoc pomocí aplikace a na serveru a v klientovi. Frontend a Backend Interact přes AJAX a HTML kód, který je zpracován na serveru.

Jak vidíme, moderní vývoj je komplexní a víceúrovňový proces, který je rozdělen do dvou částí: klienta a server. V programátorech arzenálu a backend existuje mnoho nástrojů, z nichž výbor závisí na úkolech a složitosti projektu. Oba typy vývoje zahrnují technické a kreativní komponenty.

Odpovědnosti developerů před backendem a backendem jsou obvykle rozděleny, ale jsou časy, kdy musí programátor vyřešit problémy, které vznikají jak na straně serveru, tak v části klienta. Často na trhu se můžete setkat s odborníky, kteří se s jistotou cítí jak v dopr., a v backendu a mohou kombinovat dva typy práce.

Můžete začít svou cestu do vývoje předávání a backend z 12měsíčních dovedností. Je vhodný pro nováčci a programátoři s malým zážitkem. Pro rok posluchače studentů v praxi prozkoumají hlavní programovací jazyky a vytvoří své portfolio, což pomůže najít slibnou a dobře placenou práci.