Bir arka uç geliştiricinin bilmesi gerektiği. Önden arka taraftan

Boşluk:
web Geliştiricisi Backend

Web geliştirme alanındaki talep edilen uzmanlıklardan biri, web uygulamasının sunucu kısmı olan bir arka ucun oluşturulmasıdır. Profesyonellerin başarılı istihdamı için, bilgi ve becerinin belirli bir bagajı gereklidir. Şirketlerin temsilcileri, takımlarında hangi uzmanların görmek istediklerini söyler.

  1. Arka uç-web geliştiricisinin hangi bilgi ve becerileri var?
  2. Backend Web Geliştiricisinin Araç Takımı Nedir?
  3. Şirketin potansiyel çalışanların oluşumu için gereklilikleri nelerdir?
  4. İş deneyimi için gerekenler nelerdir?
  5. Şirketin özgüllüğünden kaynaklanan herhangi bir özel gereksinim var mı?

Arthur Bozhenov, İç Otomasyon Bölümünün Kıdemli Programcı Olumlu Teknolojiler

Timur Himullin, Otomasyon Testleri İçin Doğal Mühendis Gelişim Teknolojileri Anabilim Dalı Olumlu Teknolojiler

1. Arthur Bozhenov: Arka uç web geliştiricisi aşağıdaki becerilere ve bilgiye sahip olmalıdır:

  • Çok iş parçacıklı programlama;
  • asit prensipleri (atomiklik, tutarlılık, izolasyon, güvenilirlik) ve uygulamalarda uygulamaları;
  • ağ mimarisinin ve protokollerin genel prensipleri;
  • hTTP isteğinin / yanıtın yaşam döngüsü, geçiş yolu;
  • ağ Bağlantılarının Korunması (HTTPS). Yetki. Kaynaklara erişim haklarını belirlemek;
  • Dinlenme, odata, webapı, sabun;
  • ağ hizmetleri;
  • web Uygulaması Hosting (IIS, Nginx, Lighttpd, NODE.JS, Apache);
  • Çözeltinin Ölçeklenebilirliği, Dengeleme / Yönlendirme Talepleri;
  • kerestecilik;
  • veri önbelleğe alma;
  • veri depolama (göreve bağlı olarak yeterli depolama yöntemi seçeneği);
  • Çok miktarda veri ile çalışmak.

2. Arthur Bozhenov: Temel Toolkit Backend Web Geliştirici:

  • rahat IDE (Visual Studio, Netbeans, vb.);
  • rEGEX ifadelerini, JSON, XML, yanlış kodlamada metin oluşturma / görüntüleme / görüntüleme hizmetleri veya yardımcı programları;
  • Google ve stackoverflow;
  • MONGODB / REDIS / MEMCACHED;
  • ElastiCSearch / Kibana;
  • Rabbitmq / Zeromq / MSMQ ve diğer MQ.

Timur Himullin: IDE'ye gelince, bu tadı, en azından not defteri (Sabloim, NPP), ancak Jetbrain ürünleri yönünde ve birbirleriyle iyi bir şekilde entegre olan diğerleri daha iyi görünüyordu.

3. Arthur Bozhenov: Daha yüksek (isteğe bağlı) teknik (gerekli). Deneyim pratik iş daha önemli.

Timur Himullin: Eğitim gelince, daha iyi teknik veya matematikseldir.

4. Arthur Bozhenov: 3-5 yıl ön olmayan bir gelişme.

Timur Himullin: Arka uç geliştiricileri için netleşemiyorum.

5. Arthur Bozhenov: Analitik zihin.

Timur Himullin: Takımda çalışmak için gerçek beceri ve pazarlık yapma yeteneği. Tüm uygulama modüllerinin genel mimarisinin ve etkileşiminin düşünmeden hemen çalışmayı ve derhal çalışmayı bilmeyen bir geliştirici, hiçbir yere götürmezdim. Dış kaynakda otursun!

Ağ Projeleri Bölümü Başkanı Evgeny Kuzin,LLC "Doktor Web"

1. Her şeyden önce, Backend Web Geliştiricisi, tüm geliştiriciler için ortak bir bagaja sahip olmalıdır - mühendislik düşüncesi, görevin özünü girme yeteneği, bileşenlere ayrılma ve çözmek için araçları doğru şekilde seçmek için.

Web Uygulaması Mimarisi, sıradan mimarlığından önemli ölçüde farklılık gösterir. uygulamalı yazılım Her şeyden önce, düzinelerce aynı anda ve bazen yüzlerce kullanıcı web uygulamalarıyla birlikte çalışabilir. Birbirinden müşteri yalıtımı, sistem güvenliği, sistemi ölçeklendirerek üretkenlikte bir artışın hesaplanması ve ilgili mimari ve teknik çözümler web geliştiricisinin omuzlarında tamamen düşer.

İkincisi, Web geliştiricisinin internetin gelişimine duyarlı bir yanıt vermesi, kullanılan teknolojileri ve araçları analiz etmesinin önemlidir.

Web geliştiricisi, yeni teknolojilere yönetmekten korkmamalı, yükselmesi kolay olmalı (meslektaşları - uygulama programcıları ile karşılaştırıldığında) ve hızlı bir şekilde hareket edebilecektir.

2. Belirli programlar aramıyorum, çünkü her açıdan eşdeğer seçenekler için mümkündür.

Tabii ki, web sayfasındaki elemanları ve komut dosyaları ile analiz, doğrulama ve manipülasyon için gerekli tüm uzantılarla tarayıcı. Ardından, çeşitli özel HTTP istekleri gönderilmesine izin veren yardımcı programlar (% 95 web geliştirme HTTP protokolüdür) ve trafik ve veri değişimini ve veri alışverişini istemci ile sunucu arasında ayrıntılı olarak analiz eder. Ayrıca bir arka uç web geliştiricisi ihtiyacı metin düzelticiKullanılan, hata ayıklama araçları, profil oluşturma ve versiyonları kontrol eden programlama dillerinin desteği ile arzu edilir.

Ayrı olarak, teknik belgeleri yazmak veya üretmek için araçlardan bahsetmeye değerdir. Belgeler iyidir, iyi belgeler de fena değildir.

Ve elbette, ana araçlar kafa ve düz ellerdir.

3. Rusça bilmek, hem yazılı hem de sözlü olarak meslektaşlarla iletişim kurmada düşüncelerinizi açıkça ve açıkça belirtebilirsiniz. Gerisi için, daha yüksek teknik eğitimin zorunlu bir şekilde veya herhangi bir sertifikanın kullanılabilirliğine ilişkin başvuru sahiplerine ihtiyacımız yoktur - iş kalitesini ve pratik bilgilerinizi çözer.

4. İşte eğitimde olduğu gibi aynı ilke. Deneyim, deneyim - koşulsuz profesyoneller, ancak her adayı bireysel olarak düşünüyoruz.

5. İnternet için tam olarak gelişmekten bahsedersek, web gelişiminin kendisi zaten kullanıcı için halka açık bir ortamda çalışan bir uygulamanın oluşturulmasını, gerçek niyetleri bilinmeyen. Herhangi bir işlemi programlama, kendinize sorular sormanız gerekir: Ya kullanıcı (bir saldırgan) bu eylemin sonsuz yürütülmesini otomatikleştirirse? Uygulamanın giriş verileri keyfi olarak düzenlenirse ne olur? Bu hizmete bağlantı girerse açık ErişimBir IM üzerinden başka bir kullanıcıya iletilecek mi? Vb.

Faaliyetimizin özellikleri sayesinde, genellikle saldırganlara giden yola devam ediyoruz ve çalıştığımız veriler belirli çevrelere büyük ilgi duyuyor, bu yüzden bazı web uygulamalarımızın bazıları özellikle tam koruma gerektiriyor.

Nikolai Netherry, Yeni Gelişme Başkanı, Badoo

1. Badoo'daki arka uç web geliştiricisi, herhangi bir iyi mühendis gibi, görevi anlayabilmeli ve mevcut teknolojiler ve araçların çerçevesinde etkili bir şekilde çözebilmelidir. PHP + MySQL kullanıyoruz, bu yüzden web geliştiricimiz öncelikle ücretsiz PHP ve SQL'ye sahip olması gerekir. Sorumlu olmalı ve çalışmalarını iyi yapmaya gayret edilmelidir - son teslim tarihlerini gözlemlemek, görevin ürün / teknik değerini anlamak, nihai kaliteye cevap vermek için.

2. Temel Set PHP, MySQL, Nginx, Git, Jira, IDE, Favori Tarayıcıdır ve komut satırı. Ek olarak, bazı görevleri çözmek için geliştiricilerin her yerde kullanıldığı çok sayıda farklı alet, sistem, kütüphaneler var. Bu araçlardan bazıları açık kaynakta mevcuttur, örneğin, Pinba gerçek zamanlı bir PHP izleme maddesidir, kod biçimlendirme aracımız Leptica kütüphanesi için PHPCF, PHP engellemedir.

3. Bir kişi beceri ve bilgi gereksinimlerimizi tatmin ederse, eğitimine bakılmaksızın ona bir iş sunmaya hazırız.

4. Durum eğitim durumuna benzer: katı ve resmi gereksinimler yoktur.

5. Projelerimiz büyük bir izleyici kitlesi ve yeterince yüklenmiş PHP arka uçları vardır. Zirvelerde saniyede 50 bin isteğe kadar tutuyorlar. Bu bağlamda, verimlilik konusuna özel önem veriyoruz. Önbellekleme, çoğaltma, verilerle optimum çalışmanın temel prensiplerini anlamak, kaynakların tüketimini ve dağıtımını optimize edin. Herhangi bir düzeyde verimlilik problemini görebilir ve yerelleştirebilirsiniz.

Denis Streetov, Teknolojik Gelişim Dairesi Başkanı ve Şirketin Bakımı "NTC IT Rosa"

1. NTC BT ROSA'da böyle bir pozisyon için aday aşağıdaki becerilerle ihtiyaç duyulacak:

  • ruby Rails üzerinde iyi bilgi 4.x;
  • davranış odaklı gelişimine aşinalık;
  • toplu Gelişim İlkelerine Bağlı - Versiyon Kontrol Sistemleri, Görev Trackers vb.;
  • veritabanları ile deneyim (hem ilişkisel hem de NOSQL);
  • İnce / Haml ile deneyim;
  • javascript / CoffeeScript ile bilgi ve deneyim;
  • cSS / SCSS bilgisi.

2. NTC BT ROSA'da web geliştirme için şu anda Bootstrap çerçevesinin yanı sıra JavaScript Çerçevesi Angularj'ları kullandı. PostgreSQL ve Redis verileri saklamak için kullanılır. Rails üzerindeki Ruby'deki gelişme, RSPEC Toolkit'i kullanarak davranış odaklı kalkınma yaklaşımına uygun olarak gerçekleştirilir.

3. Yüksek teknik eğitimin varlığı bir artı olacaktır, ancak ilk etapta diploma bakmayacağız, ancak potansiyel bir adayın beceri ve deneyimlerine bakmayacağız.

4. Tecrübe, yıldan yıla projelerden arzu edilir, burada ilk teknoloji fıkrasında (en azından raylardaki raylardaki ruby) kullanıldı.

5. NTC'deki Backend-Web Geliştiricileri Rosa, temel olarak ABF geliştirme ve montaj sisteminin ana ürünlerimizi oluşturur - Linux OS ve ürünlerin bu işletim sistemi altında satır dağıtımlarını oluşturur. Bu nedenle, bu boşluk için bir adayın Linux'a ve bu sistem için montaj paketleriyle tanınırsa, büyük bir avantaj olacaktır. ABF - sanallaştırma (özellikle, LXC), konfigürasyon yönetim sistemleri (örneğin, esasen) ve kod depolama sistemlerinde (özellikle GIT) (Öncelikle GIT) kullanılan diğer teknolojilerle daha fazla bilgi edilmeyecektir.

Sergey Kazantsev, Kıdemli Geliştirici, "Kaspersky Lab"

1. Geliştiriciler web sunucularında yapılan kodlardan sorumludur.

Böylece, arka uç geliştiriciler sadece programlama dillerini değil, aynı zamanda sunucu mimarisi, veritabanları ve ağ etkileşim protokollerini de anlamalıdır.

2. Geliştirici en az bir üst düzey programlama dili, verimli web geliştirme ve web sunucusu için çerçeve bilmelidir.

Popüler demetler olabilir:

  • C # + ASP.NET + IIS;
  • Java + Bahar MVC + Apache Tomcat;
  • Ruby rayları + nginx;
  • Python + django + apache;
  • PHP + Apache;
  • ... veya kombinasyonları.

Birçok şirket web hizmetleri, Microsoft Technologies ve Platforms. NET, ancak raylardaki Ruby, Perl, PHP de uygulanır.

İyi bir arka uç geliştiricisinin arsenalinde her zaman araçlar vardır:

  • trafik İzleme: Fiddler, Wireshark;
  • profillendirme performansı, hafıza ve veritabanı istekleri;
  • hızlı arama günlükleri: GREP.

3. Veritabanları, mesajların sıraları ve dağıtılmış önbellek kullanımı için büyük projelerle çalışmak zorunlu becerileri.

4. Gerekli deneyim, başvuru sahibinin iddia ettiği pozisyona bağlı olabilir:

  • 1 Yıl - Junior Web Geliştirici;
  • 2-5 yıl - Web geliştiricisi;
  • 5-7 + - Kıdemli / Kurşun Geliştirici.

5. Kaspersky Lab'ın özel gereksinimleri, kriptografi bilgisine, web uygulamaları için potansiyel tehditler ve onları önleme yollarına bağlanabilir.

ILYA KUTUKOV, Kıdemli Programcı, Paralelliklerde Web Mühendisliğinde Uzman

1. Biz paralelliklerde, bu tür uzmanlar için açıkça iki boşluktur - önde gelen web arka uç geliştiricisi (http://hh.ru/vacancy/12586616?query\u003dParalLels) ve önde gelen Web Bachend Geliştirici ve Mimar (Python) (HTTP: //hh.ru/vacancy/12599030?query\u003dparLels), böylece bu tür uzmanlardan tam olarak ne istediğimizi biliyoruz. Bize gelen bir kişinin gerekli programlama dillerini ve teknolojilerinin yeterince çalışması için sahip olduğu anlaşılmaktadır. Kodlama becerilerini ve genel olarak kontrol etmenin yanı sıra, mimarda bir test veriyoruz - sistemin geliştirilmesinde serbestçe yazılmış ve bilerek eksik bir TK'dir. Ayrıca, adayın ona net olmadığını açıklığa kavuşturma, hangi ek soruları ve sistemin ana bileşenlerini nasıl gördüğünü, veri şeması, her şeyin yükü arttıkça, veri miktarını, ve ne ihmal edilebilir.

2. Ana araç seti - IDE (Takımda, Pycharm'ı tercih ettiğimizi netleştireceğim), geliştiricinin ortamı, yani savaş sunucularının doldurulmasında mümkün olduğunca mümkün olduğunca bir dizi program, ancak aynı Neler olup bittiğini hızlı bir şekilde anlama yeteneği ile zaman, VCS, kafa komut dosyaları. İlginç, nispeten yeni araçlar, teknolojiler ve yaklaşımlar, "reaktif" yaklaşımdan (AKKA, RX. *, Apache Storm, vb.) Mesajlar, olaylar seviyesindeki düşüncenin geliştiricisini gerektiren "reaktif" yaklaşımdan bahsetmek istiyorum. ve değişiklikleri. Arabirim tanımlarını iyi tamamlayan mikrovuzserlik mimarlarının yanı sıra, veri alışverişi yapıldığı sözleşmeler oluşturmayı mümkün kılan (tasarruf, Avro, Protobufs, JSON şeması).

3. Bizim için eğitim temel bir rol oynamaz.

5. Geliştiricilerin, paralellikler gibi paralellikler, Masaüstü Portalı, paralellik erişimi gibi çözeltilerde paralellikler gibi işlevsellik üzerinde çalışmalarını artırdık (çözüm) uzaktan erişim) Ve çeşitli altyapı çözümleriyle MAC için (farklı işletim sistemlerinin makinelerinde ve onların uygulamaları üzerine başlaması), çeşitli altyapı çözümleriyle paralellikler. Bu nedenle, sıfır duruş süresi olarak böyle bir özgüllüğümüz var ve bir kişi sadece değişikliklerin yapılması gerektiğini, aynı zamanda nasıl yapılacağını, kullanıcıları etkilemeyeceğini de anlamıyoruz.

Konstantin Kichinsky, Stratejik Teknoloji Uzmanı, Microsoft Rusya

1. Bir arka uç web geliştiricisi için gerekli bilgi ve beceriler:

  • Ağ mimarisi, protokoller, iletişim kanalları.
  • Projeye karşılık gelen teknolojik yığın (örneğin, C #, .NET, ASP.NET veya JavaScript / Tyn, .NET, ASP.NET veya JavaScript / Tipescript + NODEJS) + Kontrol işletim sisteminin altında (örneğin, Windows / Azure + PowerShell).
  • Dağıtım ve test otomasyonu (yük dahil).
  • Anlayış bulut özellikleri Hizmetlerin ölçeklenebilirliğini sağlamak da dahil olmak üzere ana sağlayıcılar (Microsoft Azure, AWS).
  • SDL ve genel güvenlik konularında (şifreleme ve kimlik doğrulaması dahil).

2. Araçlar: Visual Studio, Git + Gerisi, süreçlere ve teknolojik yığına bağlıdır.

3. Eğitim: Profil (BT) + Pratik deneyim, belirli alanlarda karşılama kalite bilgisi (ayrıca güvenlik veya sitenin hata toleransını sağlamak).

4. Deneyim: OS projelerine katılım dahil, gerçek projelerde pratik deneyim.

5. Özel Gereksinimler: Azure.

Alexander Dağı, Direktör bilişim Teknolojileri Mail.ru grubu.

1. Öncelikle, ana programlama dili, veritabanı, sunucu uygulamalarını organize etme ilkeleri bilmesi gerekir. Ek olarak, Web'de bilgi gerektiriyor: HTTP protokolü cihazı, CSS yetenekleri, en azından HTML ve JavaScript'in temel mülkiyeti. Ve nihayet, iyi bir geliştirici olması gerekir - kendi ve başkasının kodunu hata ayıklayabilmek, klasik algoritmaları düzgün bir şekilde kullanmak için, ilgili veri yapılarını seçmek için.

2. Ana araç, elbette, programlama dilidir. Dil, Toolkit'in ikinci seviyesini tanımlar: bu çerçeve dili ve kütüphane kitleri için standart. Ardından Veritabanlarını Git: En sık MySQL veya PostgreSQL - ve Tarantool veya Redis gibi NOSQL depolama tesisleri.

3. MAIL.RU Group'da çalışmak için cihaz sırasında diploma için resmi bir gereklilik yoktur. Katıldığı gerçek beceri ve projeler için çok daha önemlidir. Mail.ru Grubu'nun iki büyük eğitici projeye sahiptir: MSTU Bauman ve Teknotu'na dayanan bir teknopark, iMC MSU'su temelinde, öğrencilere web geliştirme alanında özel becerileri vermektir.

4. Tekrar resmi bir gereklilik yoktur, ancak genel olarak geliştiricinin iki veya üç yıllık deneyimden sonra "İkinci Numara" sonrasında bir yerde tamamen bağımsız hale geldiği söylenebilir.

5. Arka uç geliştirme, geleneksel olarak firmamızın kalbidi. Arka uç geliştirici, her şeyde en iyisi olmalı - akıllı, yaratıcı, sorumlu, düzgün, iyi bir takım oynatıcı ve tercihen başın etrafındaki bir pabucu ile. Teknik açıdan, özgüllüğümüz, arka ucun çoğunun C ++ ile yazıldığı ve scripting dillerini yapmamaktır - yüksek yükler onu zorlayan yüksek yükler.

Alexander Nedzelsky, ITSoft Web Studio Başkanı

1. Bachend geliştiricisinin belirli bir kolektif görüntüsü hakkında konuşursak, sonra:

  • oOP, tasarım şablonları, temel algoritmaların bilgisi ve veri yapıları;
  • programlama dillerinden birinin bulundurulması (veya birkaç);
  • dBMS, Bilgi SQL ile deneyim;
  • İlişkisel veritabanları tasarlama ilkelerini anlamak;
  • popüler çerçevelerle deneyim;
  • versiyon Yönetim Sistemleri ile ilgili deneyim;
  • hTML, CSS, JavaScript'in temel bilgileri;
  • bir test ortamı kurma yeteneği.

2. "Notepad" ve omuzlara başın. Ve eğer ciddiyetle, herhangi bir IDE / editör ve test alanı. Genellikle, araçlar tercihlere / görevlere / yeteneklere bağlı olarak seçilir.

3. Kesinlikle daha yüksek teknik.

4. Tamamlanmış ve çalışan ticari projelerin varlığı.

5. Genellikle PHP / MySQL'de web uygulamaları, siteler ve hizmetler geliştiriyoruz. Aynı zamanda, standart çözümler için YII / Symfony ve 1C-Bitrix'u kullanıyoruz. Bu nedenle, ilgili deneyim ve bilgi bizim için önemlidir.

Eduard Gursky, Dahili Gelişim Ekibinde Teknik Kurşun, Jetbrains

1. Backend-Web Geliştirici, aslında, sunucu mantığını geliştiren ve hangi bağlamın yürütüleceğinin farkında olan bir kişidir - web uygulamaları bağlamında. Backend-Web uygulamaları Java'da uygulanırsa ve çoğu durumda, aslında, aynı uzman, her zamanki java geliştiricisi olarak bilgi ve beceriler için aynı gereklilikleri uygulayın: dil bilgisi, iş ve cihazların anlaşılması Java SDK'nın ana kütüphane bileşenleri vb. Bununla birlikte, çeşitli web çerçevelerine (bağımlılık enjeksiyonunun uygulanmasını, MVC, vb. Uygulamasını basitleştirerek), uygulamanın performansını değerlendirme ve geliştirme yeteneği ile deneyimler de eklenir. Kullanıcı uygulamasının, sunucu kodunun sonucunu ne kadar çabuk alacağını ve ne kadar güvenli ve rasyonel olarak ne kadar hızlı bir şekilde alacağını, diğer sunucu işlevselliğinin kullanıcının tarayıcısı aracılığıyla rasyonel olduğundan emin olmak gerekir.

Genellikle arka uç web uygulaması, üçüncü taraf hizmetleriyle entegrasyon veya işlevselliğinin dış API olarak ihracatı gerektirir. Geliştirici, bu tür görevlerin nasıl uygulandığını, bunun için protokollerin ve mekanizmaların nasıl kullanıldığını anlamalıdır.

Böyle bir kişinin temel olarak uygulama sunucusu mantığının geliştirilmesinde, uygulamanın istemci kısmını kullanarak hata ayıklamaya veya prototiplenmesi gerekliliğine rağmen. Buradan, TCP / IP protokolünün çalışmasını, HTTP protokollerinin çalışmasını, web uygulamasıyla etkileşimin prensiplerini, düzeni, CSS stilleri, JavaScript özellikleri ile ilgili temel bilgileri anlama ihtiyacını izler.

2. Genellikle gelişme için bu IDE. Ayrıca, verimlilik görevlerini, aşırı kaynak tüketimini vb. Çözmek için bir profile kullanmanız gerekir. Ekibimizde, Intellij fikri kullanıyoruz.

3. Adayların eğitim seviyesi için herhangi bir resmi gereksinim getirmiyoruz. Daha önemli deneyim, anlayış ve zeka ve elbette, insanın motivasyonu.

4. Elbette üretim web uygulamalarının geliştirilmesindeki herhangi bir deneyim, bir artıdır. Yukarıda açıklanan bilgi ve beceriler, ilgili deneyimin yokluğunda bir uzmanda bulunamaz. Görüşmelerde, genellikle, adayın bu tür görevleri uygulayarak satın alınabileceği deneyimi değerlendirmek için özgeçmişte belirtilen çeşitli projelere katılımın detaylarıyla ilgileniyoruz. Her bir yaklaşımın artılarını ve eksilerini analiz edebilecek web uygulamaları geliştirmede benzer görevleri çözmek için çeşitli yaklaşım ve teknolojileri deneyen bir uzman, çok ilginç bir adaydır.

5. Jetbrains ürünlerini kullanarak geliştirme uygulamalarının deneyimi memnuniyetle karşılanmaktadır. Hepimiz şirketteki ürünlerimizi kullanmaya çalıştık, çünkü rahatlar ve onları daha da uygun hale getirmek istiyoruz!

Ayrıca son zamanlarda, Kotlin dilinde web uygulamalarının geliştirilmesini uyguluyoruz. Bu, bir dizi önemli avantaj sağlar ve aynı zamanda kod yazma işlemini daha keyifli hale getirir. Adayın arzusu, yeni dilleri ve web uygulamalarının uygulanmasına yeni yaklaşımlar okumak için memnuniyetle karşılanmaktadır.

Dmitry Ovchinnikov, Web Geliştirici
Natalia Beetle, Sooo'daki İşveren, Minsk Geliştirme Merkezi'nde "Oyun Akışı"

1. Backend Geliştirici, Web'nin derin bir şekilde anlaşılmasını gerektirir: Çeşitli protokolleri kullanarak Intersperson iletişiminin uygulanmasından önce tarayıcının tarafındaki bir HTTP isteğinin oluşumundan. Wargaming'de web, oynatıcının sadece "kişisel bir hesap" değil, aynı zamanda homojen kimlik doğrulama, kayıt, sevk programına katılım, vb. Sağlanan çok sayıda hizmettir.

Mühendislik düşüncesine sahip olmak da önemlidir. Büyük bir teknik ufku ile birlikte, bu etkili çözümler sunmayı mümkün kılar.

Ve elbette, kalite kodu yazdığınızdan emin olun. Bir programcının yüzü kodudur. Binbaşı mimarilerin ve modern programlama düzenlerinin bilgisi, karmaşık bir proje üzerinde büyük bir takımda çalışırken genellikle zorunludur.

2. KULLANILAN Teknoloji Yığını Vargaming'te oldukça standarttır: Ana Web Projeleri Dizisi Python'da geliştirilir, bazı hizmetler PHP ve diğerleri, Erlang'ta hız ve paralel bilgi işlem için kritik öneme sahiptir. MySQL, önbellek için - Memcached için depolama için kullanılır. Rabbitmq, şirkette bir mesaj lastiği olarak seçildi. Frameworks - Django ve Bükülmüş. Ön kısım hakkında konuşursak, bu, ortak bir omurga / alt çizgi / jquery paketidir.

Geliştirme araçlarına gelince, Wargaming'de "Geliştirici için daha iyi olan" konumuna bağlıyız. Birisi modern ide kullanıyor, daha rahat birisi vim veya emac ile hissediyor. Önemli değil, işimizi uyguladığımız yardımı ile, sonuç, her gün her gün milyonlarca oyuncu yapan milyonlarca oyuncu yapan uygun ve faydalı hizmetler yaptığımızda.

3. Eğitim düzeyi için resmi gereksinimlerimiz yok. Profil (Teknik, Matematiksel) Eğitim, adayın temel bir teorik hazırlığının varlığını belirten bir artı olacaktır, ancak çalışmaya alınmadığı zaman belirleyici bir faktör olma olasılığı olası değildir. Matematik, OOP, klasik algoritmalar ve veri yapıları alanındaki bilgilerin bağımsız olarak elde edilebileceğini biliyoruz. Tecrübeli adaylara tercih edilir. Ayrıca, bir adayın mühendislik görevlerini çözmesine ve mühendislik çözümlerini yapmasına ve sadece kod yazma yeteneği.

4. İş tecrübesi için gereklilikler boşluğa bağlıdır. Genç bir uzmana davet ediyorsak, her şeyden önce "ev projelerine" ve üniversite gelişmelerine bakacağız. Bir kişinin bize tesadüfen gelmediğinden emin olmalıyız, en az küçük, ancak tamamlanan projelerle gerçek örneklerle doğrulanabilecek bilinçli bir seçimdi. Deneyimli bir uzmana gelince, gereksinimler daha spesifiktir. Birden fazla alanda deneyimlemek için önemliyiz: Veritabanları, Linux, Web Sunucusu (Apache, Nginx), Önbellekleme Sistemlerinin (Memcached), Mesajlaşma Sistemleri (RabbitMQ) ve Çerçevelerle İlgili Bilgi ve Anlayış (Django, Bükülmüş). Yüksek yük projelerinin optimize edilmesinde deneyim çok faydalı olacaktır ve geliştirme sürecine hızlı bir şekilde katılmanıza ve kendiniz ve ekip için maksimum verimle çalışmanıza izin verecek. Önde gelen uzmanlar ve uzmanlar için, yukarıdakilere ek olarak, çeşitli teknolojik yığınlarla geniş bir teknik ufuk ve deneyim önemlidir.

5. Wargaming.net'in çok sayıda oyuncu için web altyapısı için destek, yüksek yüklerle çalışma ve uygulama mimarisinde iş yapma yeteneği anlamına gelir. büyük miktar İstekleri.

Yük için hazırlığa ek olarak, güvenliği hatırlamak önemlidir. Bu nedenle, Wargaming'deki Web Geliştiricisi, büyük tehditlere karşı karşı çıkmanın mekanizmalarını bilmek ve kodunun güvenilirliğini sağlamakla yükümlüdür.

Hazırlanan igor strompel

Superjob.ru Portal Araştırma Merkezi Özellikle "Sistem Yöneticisi" işveren teklifleri için çalıştı. Backend-Web Geliştiricisinin konumuna göre, özel gereksinimler henüz tanımlanmadı, çoğunlukla programcılara sunuldukları gerçeğine benzerler.

Java programcısı

O.
Telekomünikasyon
Sanayi
Üretim
Bina
Mülkiyet yönetimi
Hizmetler B2V. Satış B2B Satış B2C.
BEN. 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
İv 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

Garip Ücret Hatları - Middle MSK, hatta - St. Petersburg'da

Maaş aralığı Mesleki beceriler için gereksinimler ve dilekler
Aralığı I.
  • Eksik Yüksek Öğretim (Teknik / BT)
  • Mükemmel bilgi HTML, CSS, Java, XML
  • Nesneye Yönelik Programlama İlkeleri Bilgisi
  • Veri Tabanı Geliştirme Teorik Temelleri Bilgisi
  • Teknik belgeler okuma düzeyinde İngilizce bilgisi
  • Altı aydan beri Java programlama deneyimi
II.
  • Web sunucuları ve uygulama sunucuları ile deneyim
  • Java Programlama Deneyimi 1 Yıl
Aralığı III
  • Yüksek Öğretim (Teknik / BT)
  • Bilgi Tasarım Şablonları Java ve J2EE
  • Özel Aletleri Kullanarak Deneyim (Hazırda Bekletme, Bahar, Struts, vb.)
  • Geliştirme ekibinde deneyim
  • Versiyon kontrol sistemleriyle deneyim
  • DBMS ile deneyim (MS SQL Server veya Oracle)
  • Java programlama deneyimi 2 yıldan beri
Aralık iv.
  • Niteliksel sertifikaların varlığı
  • Deneyim tasarımı bilgi sistemi ve proje belgelerinin hazırlanması
  • Entegrasyon çözümleri ile deneyim (IBM WebSphere, Oracle Fusion Middleware)
  • Çok seviyeli uygulamaların geliştirilmesinde deneyim
  • Java Programlama Deneyimi 3 Yıldan
Muhtemel Dilekler:
  • İngilizce bilgisi konuşma veya serbest düzeyde
  • beceriler El Kitabı Geliştirici Grubu

Valery Chernetova Hazırlanan, Superjob Analyst lideri


Temas halinde

  • Aktar

Bu liste, meslektaşları ve arkadaşlarla tartıştığım konularda kişisel bir not olarak ortaya çıktı ve daha derinleri anlamak istediğim ...

Görüşmeler hakkında teknik sorular sormak için büyük bir sevgilim değilim: benim için bir aday (veya aday) bir klavyede bir klavyede çok fazla oturmak daha iyidir, gerçek bir sorun, gerçek bir sorun - ve bir bütün gün Çifti Programlama, takımın geri kalanıyla dönüşümlü olarak arzu edilir. Ancak, bazı teknik soruların büyüleyici ve hoş bir konuşmanın başlangıcında iyi bir başlangıç \u200b\u200bnoktası olabileceğine ve birbirlerinin daha derine izin vereceğine inanıyorum.

Potansiyel adayları kontrol ederken kullanılabilecek bu depoda sunucu parçası ile ilgili bir dizi konu toplanır. Hiçbir durumda sorulmamalıdır her şey Bir aday için sorular: birkaç saat sürecek ve hiç mantıklı gelmez, çünkü çok çeşitli konuları kapsarlar. Kimse her şeyi bilemez. Sohbeti genişletmek için en alakalı bölümü ve en ilginç soruları seçin.

Bir uyarı

Soruların çoğu açık, bazıları sadece sağ veya yanlış Cevap. Aksine, konuşmanın başlangıç \u200b\u200bnoktası olmalıdır, bu bir fikirde insan yeteneklerini basit bir cevaptan daha iyi göstermelidir. Şahsen, genellikle soruları, kendimi bilmediğim cevapları tercih ederim.

Yine, soru sormak için yeterince zor olduğunu vurguladım. Röportajın sonunda, uzun bir çift programlama oturumu geçirin: Bu bir daha iyi seçeneklerStili anlamak ve birbirlerine yaklaşmak için - ve adayları anlamak için, gelecekteki çalışmalardan ne bekleniyor.

Bu proje, @darcyclarke'den gelen "Frontender'ın çalışması için bir röportajın" örneğine göre oluşturuldu.

Cevaplar nerede?

Er ya da geç, makaleyi uygun cevaplarla tamamlayacağım. Yardımınız için minnettar olurum!

Tasarım şablonları hakkında sorular:

Neden küresel nesneler ve statikler kötülüktür? Örnek kodda gösterebilir misiniz?

Bize kontrol inversiyonu ve organizasyon kodunu nasıl geliştirdiğinizi söyleyin.

Döküm Kanunu (minimum farkındalık ilkesi), her bir program modülünün diğer modüller hakkında sınırlı bir bilgiye sahip olmasını ve yalnızca doğrudan "arkadaşlarla" etkileşime girmesi gerektiğini belirtir (bazen "yabancılarla konuşma" olarak formüle edilmiştir). Bu prensibi ihlal eden bir kod yazabilir misiniz? Neden kötü organizasyonu ve nasıl düzeltileceği?

Aktif kayıt, fonksiyonların uygulanmasını teşvik eden bir tasarım şablonudur, örneğin, Ekle, Güncelleme ve Sil ve Veritabanındaki bazı temel tablonun sütunlarıyla eşleşen özellikler. Sence ve tecrübe, hangi kısıtlamalar ve tuzaklar bu şablon var mı?

Data-Mapper, bir dönüştürücü katmanının (Haritalar), nesneler ve veritabanı arasında hareket eden verileri, aynı zamanda birbirlerinden ve dönüştürücünün kendisinden bağımsızlığını koruyan bir tasarım şablonudır. Bu şablonun aksine, aktif kayıtlarda, nesneler doğrudan veritabanında kendilerini kaydetmek için işlemleri ve veritabanındaki temel tablolara karşılık gelen özellikleri içerir. Bu şablonlar hakkında bir fikriniz var mı? Hangi durumlarda bunlardan birini diğerine tercih edersiniz?

Neden NULL'ye uygulandığında genellikle "Milyar Dolar Hatası" sözü veriyor mu? Gof kitabında sunulan NULL nesne şablonu veya isteğe bağlı türler gibi bunu önlemek için teknikleri tartışmak ister misiniz?

Kompozisyon neden mirastan daha iyidir?

Güvenlik seviyesi nedir (yolsuzlukla mücadele katmanı)?

Singleton, tek bir nesne için sınıfın bir örneğini oluşturan bir tasarım şablonudur. Doğru olanı yaz (iplik güvenli singleton) çok kolay değil. Deneyin?

Müşterinin parçasını etkilemeden uygulamayı değiştirme yeteneği, soyut veri sunumu (veri soyutlaması) denir. Bu özelliği ihlal eden bir örnek yazın, sonra düzeltin.

Kendinizi tekrarlama ilkesini ihlal eden kodun bir snippetini yazın (kuru). Sonra düzeltin.

Cehennem bağımlılıklarıyla nasıl başa çıkacaksınız (bağımlılık cehennemi)?

Neden gidiyor - kötülük mü?

Güvenilirlik ilkesi, önerilen kodun organizasyonunun genel kuralıdır. "Muhafazakar olmak, kabul ettiğiniz şeyi göndermeniz ve liberal olduğunu". Genellikle olarak formüle edilir "Toleranslı okuyucu ve temkinli yazar". Bu ilkenin anlamını tartışmak ister misiniz?

Tartışma Ayrımı - Ayrılma için Tasarım Prensibi bilgisayar programı Her biri görevinden sorumlu olan bireysel alanlar için. Sorumlulukları ayırmak için birçok farklı mekanizma vardır (MVC ve benzeri gibi nesnelerin, işlevlerin, modüllerin veya şablonların kullanılması). Bu konuyu tartışmak ister misiniz?

Kodun organizasyonu hakkında sorular (kod tasarımı):

Genellikle, nesneye yönelik tasarımın (ve bir bütün olarak kodun organizasyonu) en önemli görevlerinden birinin güçlü bir debriyaj ve zayıflık olduğu söylenir. Bu ne anlama geliyor? Neden bu kadar önemli ve nasıl başarılıyorlar?

Neden çoğu dilde dizi endeksi sıfırdan başlıyor?

Testler ve TDD organizasyon kodunu nasıl etkiler?

Kendinizi tekrar etme ilkesini ihlal eden bir kod parçası yazın (Kuru). Neden kötü bir organizasyonu olduğunu ve düzelttiğini açıklayın.

Debriyaj ve bağlanma arasındaki fark nedir?

Refactoring nedir?

Koddaki yorumlar yararlı mı? Birisi mümkünse kaçınılması gerektiğini söylüyor ve ideal olarak hiç ihtiyaç duymazlar. Katılıyor musun?

Organizasyon kodu ve mimarlık arasındaki fark nedir?

TDD testleri neden koddan önce yazıldı?

C ++, çoklu mirasları destekler ve Java, sınıfın birden fazla arayüz uygulamasını sağlar. Bu fonların ortogonalite için hangi etkisi kullanılıyor? Birden fazla mirasın ve birden fazla arayüz kullanımı arasındaki etkilerde herhangi bir fark var mı? Delegasyon ve miras kullanmak arasında bir fark var mı? [Bu "Pragmatik Programcı" kitabından Andrew Khanta ve Defvida Thomas] bir soru.

Storded Prosedürlerde konu alanının mantığının artıları ve eksileri.

Sizce, nesne odaklı kuruluş neden piyasada çok yıllara hükmetti?

Kodunuzun kötü bir kuruluş varsa, nasıl anlarsınız?

Programlama dillerinde sorular:

O söyle Üç ana En sevdiğiniz programlama dilinin dezavantajları.

Neden fonksiyonel programlama ilgisini artırıyor?

Kapanış nedir ve ne için faydalıdır? Kapanışlar ve sınıflar ile ortak olan nedir?

Jenerik kullanımı ne zaman kullanışlı?

Yüksek sipariş fonksiyonları nedir? Ne için gerekli? Böyle bir özelliği herhangi bir dilde yazın.

Döngüyü yazın, ardından yalnızca değişmez yapılar (yani değişkenler olmadan) kullanarak bir özyinelemeli işleve dönüştürün. Bunu açıkla.

Dilin ilk sınıf nesneleri olarak işlev gördüğü zaman ne anlama geliyor?

Anonim bir işlev yararlı olabileceği bir örnek gösterin.

Neden ad alanına ihtiyacın var? Bir alternatif bul.

Bize Java ve C # uyumluluğu hakkında bilgi verin (veya diğer iki rasgele dil seçin).

Neden birçok geliştirici Java'yı sevmiyor?

İyi bir dili iyi ve kötü dil yapan nedir?

İki fonksiyon, referans olarak şeffaf ve diğer referanslı opak yazın. Onları tartışalım.

Yığın nedir ve bir demet nedir? Yığın taşması nedir?

İşlevlerin dildeki birinci sınıf nesneler olması neden önemlidir?

Bazı dillerde, özellikle fonksiyonel bir yaklaşımla, örneğe göre karşılaştırma denilen bir teknik izin verilir. Seni tanıyor mu? Numune haritalama, anahtar tasarımından nasıl farklıdır?

Neden bazı programlama dillerinde istisnalar uygulanmıyor? Bu yaklaşımın avantajları ve dezavantajları nelerdir?

Kedi hayvan ise, o zaman bu kadar gerçek mi? - Bu TakeCare. ?

Neden Java, C # ve diğer birçok dil tasarımcıları arayüzün bir parçası değil mi?

Son yıllarda, NODE.JS.'in etrafında çok fazla gürültü. Başlangıçta tarayıcıda çalışmak için tasarlanan BAĞITIM dilinde kullanım hakkındaki görüşünüz nedir?

Bir zaman makinenizin olduğunu düşünün ve Java tarihinde (C #, Python, GO veya başka bir şey) zamanında belirli bir noktada geri dönme fırsatı var ve JDK'nın bazı yaratıcıları ile konuşun. Onları ikna etmeye ne denersiniz? Kontrollü istisnaları silmek? İmzasız ilkel tipler ekleyin? Çoklu Miras?

Web Geliştirme Soruları:

Neden yerli kurabiyeler ve üçüncü taraf çerezleri bu kadar farklı şekilde işleniyor?

Web Hizmetleri API sürümlerinin numaralandırılmasını nasıl yönetirsiniz?

Arka uç açısından, tek sayfalık uygulamaların tanıtımına herhangi bir dezavantaj veya engel var mı?

Neden genellikle bu kadar çok çalışıyoruz ki, hizmetin vatandaşıydı? Vatansız kodda bu kadar iyidir? Neden ve Durum Depolama (Durumsuzluk) Kötü?

Dinlenme ve sabun: Hangi durumlarda, bu yaklaşımlardan birini ve başkalarından birini seçeceksiniz?

Web geliştirmede, model görünüm denetleyicisi ve model görüntüsü-görünüm-model yaklaşımları hem Besende hem de önünde büyük ölçüde benzer. Ne hayal ediyorlar ve neden onları kullanmaya uygun?

Veritabanı soruları:

Uygulamayı bir veritabanından diğerine nasıl gönderirsiniz, örneğin PostgreSQL'deki MySQL'den? Böyle bir projeyi yönetmeniz gerekiyorsa, ne sorunları bekliyorsunuz?

Veritabanı neden böyle özel bir durum olarak null? Örneğin, neden SQL SELECT * SELECT * 'den, alan \u003d null boş alanla kayıt yaptırmaz?

Asit, atomiklik, tutarlılık, izolasyon, dayanıklılık (atomiklik, tutarlılık, izolasyon, stabilite) için bir kısaltmadır. Çoğu veritabanı motoru, bu dört özelliği veritabanındaki işlemler için garanti eder. Bu konu hakkında ne biliyorsun? Sana daha fazlasını söylemek ister misin?

DB şemasının transferi ile nasıl baş edersiniz, yani, uygulama sürümden sürümden geliştirildiği için DB şemasındaki değişiklikleri nasıl otomatikleştirirsiniz?

Tembel bir yük nasıl uygulanır? Ne zaman faydalı? Sualtı taşları nelerdir?

"N + 1 problemi" olarak adlandırılan "N + 1 problemi", "ebeveynler-soylular" ilişkilerinden ORM'deki çocuk elemanlarını tembel önyükleme ile yüklediği ve dolayısıyla, ana kayıt için bir istek gönderildiğinde, ebeveyn kaydı için bir istek gönderirken, . Sorunu nasıl çözebilirim?

Uygulamadaki en fazla maliyet taleplerini nasıl buluyorsunuz?

Sizce, veritabanını normalleştirmek için her zaman gerekli midir? Denormallaştırılmış veritabanı kullanmanız önerilir?

Sürekli entegrasyon yöntemlerinden biri mavi-yeşil bir borç denir. İki endüstriyel çalışma ortamını, mümkün olduğunca mümkün olduğunca kullanır ve bunlardan birinde diğerinde konuşlandırılmış ve daha sonra uygun bir ayarda test ettikten sonra bir ortamdan ikinci olarak trafiği güvenli hale getirir. Bu yöntem, borcun veritabanının yapısını veya içeriğini değiştirmeyi içeriyorsa karmaşıktır. Bu konuyu sizinle görüşmek istiyorum.

NOSQL'deki sorular:

Sonuçta tutarlılık nedir (nihai tutarlılık)?

Peki ya Cap teoremi, CP, AP ve CA sistemlerinin örneklerini ver.

Son zamanlarda Nosql'e ilgi sıçramasını nasıl açıklarsınız?

NOSQL ölçeklenebilirlik problemini nasıl çözer?

Bu durumda, MySQL veya PostgreSQL gibi ilişkisel DBM'ler yerine MONGODB gibi belgelenmiş bir DBM'leri tercih edersiniz?

Kod sürümündeki sorular:

Dalların uygulanması neden Mercurial veya Git'te SVN'den daha kolay mı?

Git gibi dağıtılmış sürümlerin kontrol sistemlerinin artıları ve eksileri, SVN gibi merkezi VC'lerle karşılaştırıldığında?

İş akışı Github akışını ve gittiyi tanımlayabilir misiniz?

Rebase nedir (taşı)?

Birleşmenin neden MERCURIAL veya GIT'de SVN ve CV'lere göre egzersiz yapmayı neden?

Paralellik hakkında sorular:

Neden paralelliğe ihtiyacın var? Açıklamak.

Çok iş parçacıklı / paralel kodu test etmek neden bu kadar zor?

Yarışın durumu nedir? Keyfi dile bir örnek yazın.

Karşılıklı engelleme nedir? Karşılıklı kilitlerle muzdarip bir kod yazabilir misiniz?

Kaynak açlığı nedir (süreç açlığı)? Gerekirse, tanımını düşünelim.

Beklentiler olmadan engellenmeyen bir senkronizasyon algoritması nedir (bekle-serbest algoritma)?

Dağıtılmış sistemler hakkında sorular:

Dağıtılmış Sistem Nasıl Test Edilir?

Bu durumda, iki sistem arasında eşzamansız iletişim uyguluyor musunuz?

Uzaktan kaçış prosedürlerinin ana sualtı taşları nelerdir?

Ölçeklenebilirlik ve güvenilirlik için dağıtılmış bir sistem oluşturursanız, kapalı ve güvenli bir ağ ortamında ve coğrafi olarak dağıtılmış ve kamu sisteminde farklı problemler ortaya çıkabilir?

Web uygulamasının hata toleransı nasıl sağlanır? Masaüstü uygulaması?

Dağıtılmış sistemlerde başarısızlıklarla nasıl başa çıkılır?

Ağ bağlantısı ihlalinden sonra çalışma kapasitesinin (uzlaşma) restorasyonuna farklı yaklaşımlar hakkında konuşalım.

Dağıtılmış hesaplama ile ilgili yanlış anlamalar nelerdir?

İstek / cevap uyguladığınızda ve yayınlandığında / abone olduğunuzda?

Çalıştığınız sistemin işlemciliği desteklemediğini varsayalım. Sıfırdan nasıl uyguladın?

Yaşam Döngüsü Yazılım ve Manuel Ekip Hakkında Sorular:

Esneklik (çeviklik) nedir?

Eski bir kodla nasıl çalışacaksınız?

Diyelim ki, proje yöneticiniz ve programlama konusunda uzman değilim. Bana bir miras kod olanı ve neden kodun kalitesine dikkat etmeniz gerektiğini açıklamaya çalışın.

Ben şirketinizin icra memuruyum. Bana Kanban'a açıklayın ve sizi yatırım yapmaya ikna edin.

Esnek geliştirme metodolojisi ile kaskad modeli arasındaki temel fark nedir?

Grup lideri olmak, çok fazla toplantının sorununu nasıl çözersiniz?

Güçlü bir gecikme ile gerçekleştirilen projeyle nasıl başa çıkacaksınız?

"İnsanlar ve etkileşimler süreçlerden ve araçlardan daha önemlidir" ve "Müşteri ile işbirliği sözleşmenin şartlarının uyumlaştırılmasından daha önemlidir", çevik tezahürde ilan edilen değerlerin yarısıdır. Onları tartışalım.

Şirketinizin teknik direktörü olsaydı hangi kararları aldığınızı bize bildirin.

Program yöneticilerinden faydalar var mı?

Esnek bir program (bu, kurulu çalışma süresi olmadan) ve "ihtiyacınız olduğunda alın" ilgi politikaları kullanarak bir çalışma programı yapın.

Çok büyük öğretmeyi nasıl idare edersiniz ve geliştiricileri maaşı artırmadan ekibi terk etmemeye ikna eder misiniz? Şirket onları ne kalabilir?

Programlama hariç meslektaşlarınızda değer verdiğiniz üç ana kalite nedir?

Programlama hakkında hangi üç ana şey, insanları düşünmek için, fikrinizde midir?

Şirketinizin size ve meslektaşlarınızın günlük hayatının kalitesini artırmak için bir ay ve bütçe sunduğunu hayal edin. Sen ne yapardın?

Mantık ve algoritmalarla ilgili sorular:

Sadece LIVE yığınlarını kullanarak bir FIFO kuyruğu yazın. Sonra sadece FIFO sıraları kullanarak bir Lifo yığını oluşturun.

Tamponu taşmak için kodun bir parçasını yazın.

Son özyineleme ile bir faktör yazın.

Herhangi bir dilde, girilen değerleri derhal görüntüler. RPN Hesaplayıcısına Geliştirin.

Birleştirme için bir yardımcı programı nasıl tasarlamışsınız?

Rastgele labirent üreten bir program yazın.

Bellek sızıntısı oluşturan bir örnek kod yazın.

Benzersiz rastgele sayı dizisi oluşturun.

Basit bir çöp toplama sistemine bir örnek yazın.

Herhangi bir dilde basit bir mesaj komisyoncusu yazın.

Çok basit bir web sunucusu yazın. Gelecekte uygulanması gereken bir fonksiyon planı yapın.

10 GB dosyasını nasıl sıralarsınız? 10 TB dosyasında değişiklik yapmaya nasıl geldiniz?

Yinelenen dosyaların programını nasıl bulursunuz?

Mimarlık hakkında sorular:

Önbellek gerekli olmadığında ve hatta zarar verdiğinde?

Olay odaklı mimarlık neden ölçeklenebilirliği geliştiriyor?

Kodu okunabilir yapan nedir?

Gelişmekte olan tasarım (acil tasarım) ve evrimsel mimarlık arasındaki fark nedir?

Yatay ve dikey ölçeklendirme: Ne farklılık gösterirler? Bir şeyi ne zaman uygulanır ve diğer ne zaman?

Başarısızlık (Yük Devretme) ve Kullanıcı Oturumlarındaki Kontrol Anlayışı ile Nasıl Çalışılır?

CQRS nedir (komut sorgusu sorumluluk ayrımcılığı)? Komut sorgu ayırmasının eski prensibinden nasıl farklıdır?

Üç seviye mimarisi nedir?

Ölçeklenebilirlik ile bir yazılım sistemi nasıl tasarlayacaksınız?

C10K problemini çözmek için hangi stratejiler?

Merkezi olmayan bir (yani merkezi bir sunucu olmadan) P2P sistemi nasıl tasarlarsınız?

CGI neden ölçeklenmiyor?

Sistemlerinizi tedarikçiye bağlamadan nasıl korursunuz (Satıcı Kilidi)?

Ölçeklendiğinde "Publisher-Abone" tasarım şablonunun eksiklikleri nelerdir?

İşlemcilerin geliştirilmesindeki 80'lerden bu yana ne oldu, programlama için neden önemlidir?

Yaşam döngüsünün hangi aşamasında performansı ve nasıl olduğunu düşünmelidir?

DOS saldırısı nedeniyle reddetme arızası sorunu nasıl görünmeyebilir, ancak kötü tasarım nedeniyle veya mimarlık sorunu nedeniyle mi?

Performans ve ölçeklenebilirlik arasındaki ilişki nedir?

Güçlü bir nişan (sıkı kaplin) kullanmak için ne zaman kabul edilebilir?

Buluta gitmek için sistem hangi özellikleri gönderilmelidir?

Mimarlar ülkesinin tasarımının birliği var mı? Basitçe koyar: Tüm geliştiricilerin kolektif çabalarından iyi bir tasarım olabilir mi?

Tasarım, mimari, işlevsellik ve estetik nitelikler arasındaki fark nedir? Tartışalım.

Servis odaklı mimarlık ve mikro servisle ilgili sorular:

SOA uzun işlemlerde neden teşvik edilmez ve bunun yerine Saga'yı kullanmaya davet edilir?

SOA ve mikrovizyon arasındaki fark nedir?

Web hizmetlerinin sürümlerinin numaralandırılması, sürüm uyumluluğu ve geriye dönük uyumluluğu kıran kritik değişiklikler hakkında konuşalım.

SAGA'da, SAGA'da işlem ve telafi operasyonu arasındaki fark nedir?

MicroService ne zaman çok mikro?

MicroService mimarisinin artıları ve eksileri nelerdir?

Güvenlik Soruları:

Güvenli bir kod nasıl yazılır? Sizce, geliştiricinin sorumluluğundadır mı yoksa bu şirkette ayrı bir uzman olmalı mı? Ve neden?

Neden kendi şifreleme kurallarınızı icat etmeye veya tasarlamaya çalışmaması gerektiğini söylüyorsunuz?

İki faktörlü kimlik doğrulaması nedir? Mevcut bir web uygulamasında nasıl uyguluyorsunuz?

Günlükleri dikkatlice kullanmazsanız, her zaman şifreler dahil olmak üzere gizli bilgilerin oraya geleceği bir risk vardır. Böyle bir sorunu nasıl önlersin?

SQL enjeksiyonuna tabi olan kodun bir snippetini yazın ve düzeltin.

Statik kod analizi yöntemiyle SQL enjeksiyonu için bir güvenlik açığı nasıl bulabilirim? Bitmiş algoritmayı yazacağınızı beklemiyorum, çünkü çok büyük olduğu gibi, ancak genel yaklaşımı tartışalım.

Siteli komut dosyası hakkında ne biliyorsunuz? Eğer hatırlamazsanız, açıklamasını internette görelim ve bunun hakkında konuşalım.

Çapraz oturmuş sorgu sahte hakkında ne biliyorsunuz? Eğer hatırlamazsanız, açıklamasını internette görelim ve bunun hakkında konuşalım.

Https nasıl çalışır?

"Ortadaki adam" saldırısı nedir? Ve https neden buna karşı korumaya yardımcı olur?

Bir kullanıcı oturumunun çalınmasını nasıl önleyebilirsiniz? Büyük olasılıkla, hırsızlığın bir oturum veya çerez olduğunu hatırlıyorsunuz, aksi takdirde Wikipedia sayfasını bu konuda birlikte okuduk.

Genel Konular:

Programlama işlevi için neden önemlidir? İşlevsel programlama dilini ne zaman kullanmalıyım?

Microsoft, Google, Opera ve Mozilla gibi şirketler tarayıcılarında nasıl kazanır?

TCP soketinin açılması neden büyük tepeye taşıyor?

Kapsülleme kullanmak için önemli olan nedir?

Gerçek zamanlı bir sistem nedir ve sıradan sistemden nasıl farklıdır?

Gerçek zamanlı programlama dilleri ile bir yığın halinde bellek tahsisi arasındaki bağlantı nedir?

Değişmeyen, bir nesne oluşturma sırasında tek bir değer ayarının uygulanmasıdır ve bu değerler daha sonra hiç değişmedi. Sınırsızlık daha güvenli bir kod yazmaya nasıl yardımcı olur?

Değişken ve değişmez değerlerin artıları ve eksileri.

Nesne ilişkisel boşluk nedir (nesne ilişkisel empedans uyuşmazlığı)?

Önbelleğin boyutunu belirlemek için hangi ilkeleri uyguluyorsunuz?

TCP ile HTTP arasındaki fark nedir?

İstemci tarafındaki ve sunucu tarafındaki işleme seçiminin tehlikeleri nelerdir?

Güvenilir bir iletişim protokolü nasıl geliştirilir?

Sıfır Pointer Tony Hoar'ın mucidi bir keresinde "Milyar dolarlık hatamla diyebilirim" dedi. " Programlama dilinizde sıfır işaretçi kullanma olasılığını ortadan kaldırmak istediğinizi varsayalım: Böyle bir göreve nasıl karar veriyorsunuz? Hangi sonuçları olabilir?

Açık sorular:

Neden insanlar değişime direniyor?

İplik kavramını büyükannenle açıklayın.

Bir geliştirici olarak, eşzamanlı olarak inovasyonu ister ve uygulanabilir olursunuz. Bu iki hedef, aynı stratejide birbirleriyle nasıl birlikte olabilir?

İyi bir kod iyi yapan nedir?

Yayın yayıncağının nasıl yapıldığını ve nasıl uyguladığınızı açıklayın.

Şirketinizin size ve meslektaşlarınız için hayatı iyileştirmek için size bir hafta verdiğini varsayalım: Bu hafta nasıl kullanıyorsunuz?

Geçen hafta için ne buldun?

Herhangi bir tasarımda estetik element var. Soru şu ki, bu estetik arkadaşınız mı yoksa düşmanınız mı?

Okuduğunuz son beş kitabı adlandırın.

Cascade modelinden sürekli tedarik yaklaşımına geçişin, büyüklüğü ve iş karmaşıklığı nedeniyle önemsiz olmadığı büyük bir başarılı şirkette sürekli bir teslimat yaklaşımını nasıl uyguluyorsunuz?

Tekerleği yeniden icat etmek mantıklı mı?

ANEW tekerleklerinin icadıyla konuşalım, başkasının şirketini veya kendi hizmetlerinin ve ürünlerinin geliştiricilerin bir ekibini (kendi yemeğinizi yeme) kullanmanın bir başkasının gelişimini ve uygulamasının sendromu reddedilmesi hakkında konuşalım.

Mevcut iş akışında ilk önce ne kadar otomatikleştirirsiniz?

Yazılı zorluklar nelerdir yazılım? Yazılımı desteklemeyi zorlaştıran nedir?

Tamamen yeni projeler (Greenfield) üzerinde çalışmayı mı tercih edersiniz veya mevcut (Brownfield) devam ettirin mi? Neden?

Belirli bir kodun yürütülmesi için bir komut olmadığında işletim sistemini yapan nedir ve boş görünüyor? Kesintiler, şeytanlar, arka plan hizmetleri, anketler, olayların işlenmesi vb. Hakkında konuşmaya başlamak istiyorum.

Unicode veya işlemleri beş yaşındaki bebeğin DBM'lerinde açıklar.

Monolitik mimarinin lehine argümanlar verin.

"Profesyonel bir geliştirici" olmak ne demektir?

Programlama sanat, zanaat veya mühendislik midir? Senin görüşün.

Kurumlar neden başlangıçlardan daha yenilikleri tanıtıyor?

Son başarın seninle gurur duyuyorsun?

Kod parçalarına sahip sorular:

Bu işlevin uygulanmasının JavaScript'in sonucu nedir?

Fonksiyon bağlantıevler () (için (var i \u003d 0; i< 3; i++) { document.getElementById("button" + i) .addEventListener("click", function() { alert(i); }); } }
Böyle bir Java kodunu verecek olan türleri silmek ya da neden?

ArrayList. LI \u003d Yeni ArrayList (); ArrayList. LF \u003d Yeni ArrayList (); if (li.getclass () \u003d\u003d lf.getclass ()) // true system.out.println ("eşit") için değerlendirir;
Bellek sızıntısını tespit edebilir misiniz?

Kamu sınıfı yığını (özel nesne elemanları; özel int boyutu \u003d 0; özel statik final int desidl_initial_capacity \u003d 16; halkın yığını () (öğeler \u003d yeni nesne;) halkın boşlukları itme (Nesne E) (ESSURECAPACACACE (); Elements \u003d e;) Genel Object Pop () (eğer (boyut \u003d\u003d 0) yeni emsalStAckException (); iade elemanları [- boyut];) / ** * * en az bir öğe için denele alanı, kabaca * Dizisi her seferinde kapasiteyi iki katına çıkarma büyümek için. * / özel void nesneCapacity () (eğer (Elements.lengthgth \u003d\u003d Boyut) Elements \u003d dizi.copyof (elemanlar, 2 * boyut + 1);)))
Switch anahtarından kurtulabilir ve daha fazla nesneye yönelik kod yazabilir misiniz?

Kamu sınıfı formatı (özel servis hizmeti; kamuoyu formatı (hizmet;) ortak dize dothejob (string theinput) (string response \u003d service.askforpermission (); anahtarı (yanıt) (dava "başarısız": iade "Hata"; Kılıf "Tamam" : iade string.format ("% S% s", theinput, theinput); Varsayılan: NULL;))))
Operatörlerden kurtulabilir ve daha fazla nesne yönelimli kod yazabilir misiniz?

Kamu sınıfı Theservice (Özel Final FilahaHandler FileHandler; Özel Final Foorepository Foorepository; Kamu Theservice (FileHandler FileHandler, FooRepository Foorepository) (this.FileHandler \u003d fileHandler; this.foorepository \u003d foorepository;) Genel dize yürütme (final string dosyası) (Final String Rewrittenurl \u003d Filehandler.getxmlfilefromfilename (dosya); final string executionID \u003d filehandler.geeextionIdfromFileName (dosya); ); eğer (knownfoo \u003d\u003d null) (dönüş "";) ReturnFoo.dothat (dosyayı) döndürürse;)))
Böyle bir kodun refactoring nasıl yapılır?

İşlev () () (HRESULT ERROR \u003d S_OK; eğer başarılı olursa (eğer (eğer (başarılı (çalışır) (eğer (Başarılı (operation3 ())) (eğer (başka (hata \u003d operation4failed;))) Başka (hata \u003d Operation3failed;)) başka (error \u003d operation2failed;))) başka (error \u003d operation1failed;) dönüş hatası;)

Arka uç geliştirici (İngilizce'den. Arka uç (ters taraf) geliştiricisi) Bu, bir web uygulamasının, dahili sistem içeriği, sunucu teknolojisi - veritabanı, mimarlık, yazılım mantığı yazılım-idari bir bölümünde bulunan bir uzmandır. Meslek, bilgisayar bilimi ile ilgilenenler için uygundur (okul konularına ilgi duyulan bir mesleğin seçimine bakın).

BOR-END geliştiricisi görünmez bir ön savaşçıdır.

Modern siteler, web uygulamaları ve oyunları çok karmaşık hale geldi, bu yüzden bir uzman ekibi onlar üzerinde çalışıyor. Tam, güzel, işlevsel ve kullanıcı dostu bir site oluşturmak için, ön uç ve arka uç geliştiricilerin tutarlı bir şekilde çalışması gerekir. Bu, bir web sitesi veya web uygulaması oluşturmak için hızlı bir iştir ve hizmetini kolaylaştırır.

Mecazi olarak konuşma, arka uç gelişim, bir araba motorunun oluşturulmasıdır, ön uç gelişme, makine kontrolünün tasarım ve işlevlerinin oluşturulmasıdır. Arka uç geliştirici, ön uç geliştiriciyle yakın bağlantıda çalışır, kullanıcı bilgilerini alır ve elde edilen sonucu geri döndürür.

Temel Araçlar Geri Son Geliştirici - Sunucu Programlama Dilleri: PHP, Python, Ruby, Java, Perl, Düğüm JS (Yazılım Platformu) gibi. JS düğümüne ek olarak, Express'i öğrenmek için (bir sunucu ile düğüm JS platformunu etkileşimde bulunacak kütüphane) ve bir Mongo DB (bilgi edinmek ve depolamak için veritabanı) öğrenmek faydalıdır.

Gibi ek fonlar Symfony, CodeIgniter, Yii, Zend Framework, Kohana vb. MySQL / SQLite kullanarak verileri saklamak için kullanılır.

Mesleğin Özellikleri

Modern geliştiriciler sadece programlar için kod yazmaz. Yani 10-15 yıl önce çalıştı programcılar. Şu anda, böyle bir terim uygun değildir, çünkü işte, kod yazmadan yapılması genellikle mümkündür, sadece bitmiş parçaları tek bir konfigürasyona bağlar. Ve programcılar şimdi "geliştirici" veya "mühendis" olarak adlandırılır.

Bu alanın gelişimi ile projeler daha karmaşık hale geliyor ve neredeyse her görev için hazır çözümler (çerçeveler) kullanılarak toplanabilecek bir tasarımcıdır.

Böylece, geliştiricinin pro-son işlevselliği şöyle görünür:

  • servis Mimarisinin Tasarımı;
  • bir site çekirdeği oluşturma;
  • platformun ve ana fonksiyonelin gelişimi;
  • kod mimarisi ile çalışmak;
  • kullanıcı arayüzünü ve güvenliğini destekleyen uygulamaların geliştirilmesi;
  • sunucuların durumu üzerinde kontrol (savaş, test ve işçi);
  • versiyonların, veritabanlarının, sürekli entegrasyonun kontrolü.

Artıları ve Eksileri Mesleği

Yüksek ödemeli ve talep edilen meslek.

İş yeri

Site Geliştirme Şirketleri, Web Uygulamaları, mobil uygulamalar.

Önemli nitelikler

  • analitik zihin
  • mantıksal düşünme
  • İnisiyatif
  • planları planlama ve takip etme yeteneği
  • takım çalışması becerileri
  • düşünme esnekliği
  • sorumluluk, Azim, Amaçlı
  • sonuç ve kaliteye odaklanın
  • yeni ve uygulamasını çalışmalarında sürekli olarak inceleme arzusu

Mesleki bilgi ve beceriler

En az bir programlama dilinin bilgisi: GO, C, C ++, Perl, Python, PHP, Ruby, Java.

  • hızlı, güzel ve doğru kod yazabilme;
  • popüler Web Freignors (Django, Şişesi, Bahar) bilgisi;
  • beceri tasarımı veritabanları ve istekleri optimize eder;
  • modern programlama paradigmalarının bilgisi;
  • tasarım desenleri bilgisi;
  • web hizmetlerinin anlaşılması, arayüzleri;
  • teknik belgeleri okumak için İngilizce.

Arka uç geliştiriciden nerede öğrenilir

Trenler (şahsen, Moskova). Bilgisayar eğitiminde uzmanlaşmış uluslararası eğitim kurumu. 1999'dan beri çalışıyor. Dünyanın 16 ülkesinde 42 şube. En büyük yetkili eğitim merkezi Microsoft, Cisco, Autodesk. Öğrenciler uluslararası sertifika ve uluslararası diploma alırlar. Asıl amaç, her mezunun istihdamıdır.

Yüksek öğretim:

Arka uç gelişim alanında gerçek bir profesyonel olmak için, aşağıdaki üniversitelerde elde edilebilecek temel bir profil eğitimi elde etmek gerekir:

Ancak, üniversitenin temel eğitiminin eğitim için temelini belirlediğini, ancak şu anki bilgi için yeterli olmadığını hatırlamak önemlidir. modern teknolojiler. Bu nedenle, tüm yeni teknolojiler ve araçları takip etmek için bu alanda kendi kendine eğitim önemlidir. Ancak, sırayla, profil eğitimi eksikliği, bir şeyin işe yaraması ve kişinin anlamadığı ve kimsenin anlamadığı şeyi etkiler. Tabii ki, temel eğitime sahip bir uzman, her şeyi bilmiyor, ancak büyük bir beceriye sahip - nerede bulabilirim ve gerekli bilginin nasıl kullanılacağı.

Modern işverenler, kural olarak, resmi gereksinimlerini dayatmaz. yüksek öğretim ofis için adaylar. Onlar için en önemli deneyim, zeka, bir uzmanın motivasyonu.

WARRY ÖDEME (Kaç Arka Son Geliştirici Kazancı)

09/16/2019 tarihinde maaş

Rusya 40000-100000 ₽

Moskova 80000-300000 ₽

Merdivenler Kariyer ve Perspektifler

Arka uç geliştiricinin konumundan, geliştirici ön ucunun becerilerini geliştirdikten sonra, tam yığın geliştiricisine doğrudan yol. Daha fazla büyüme için, sürekli olarak yeni öğrenmek için gereklidir: geliştirme teknolojilerini ayrıntılı olarak incelemek yazılım ÜrünlerServis sistemlerinin yapılandırılması ve yapılandırılması.

Bölümlerdeki geçişler bazen farklı şekilde ilişkilidir. Birisi, bir şirket içindeki herhangi bir kariyer değişikliğini, kayıt direklerinin prizması yoluyla görmeye sadece bir tanıdık geliyor. Birisi, mevcut olana bitişik olsa bile, etkinlik kapsamını değiştirmeyi düşünmez. Üçüncüsü, ilke olarak, bölümdeki bölümden geçişin, bir kişinin "bir balık ne de etin" konumunu aldığı anlamına geldiğinden emin olduk.



Aynı zamanda, bazı işverenler bunu her şekilde ağırlıyor ve tükenmişlikten bir sigorta gibi bir şeyi düşünüyor - bir kişi dikkatin odağını değiştirecek, departmanı veya bölümü değiştirecek, ancak işin kendisini bir bütün olarak değiştirmeyecek.


Benim adım Kostya ve Qiwi'de neredeyse 4 yıldır çalışıyorum. Bugün size önündeki gelişimden arka ucunda ne kadar başarılı bir şekilde değiştirildiğini söyleyeceğim.

Başlangıç \u200b\u200başaması

Qiwi'de, 2014 yılının sonundan bu yana, IOS uygulamalarının geliştiricisi olarak çalışmaya başladım ve ilke olarak, birkaç yıl bir Qiwi cüzdanının gelişiminde yer aldı. Aynı zamanda, sıkıcı olduğunu söyleyemem - görevler oldukça farklıydı ve aynı uygulamada: Cüzdanın diğer hizmetlerle entegrasyonuyla meşguldük, hataları intikamıyla, animasyonu sıkıldık. Buna ek olarak, Apple Watch için bir uygulama oluşturma konusunda ileri bir deneyim oldu. Sonra biraz odaklandı ve "vicdan" için iOS uygulaması üzerinde bile çalıştı.



Ve sonra, sonra yavaşça arkaya doğru hareket etmeye başladım. Esnek metodoloji açısından bile uygundur - anahtarlıyım, ilk Sprint'te bir tür Bachenda görevlerini yapabilir ve ikincide yazdığım API'nin entegrasyonunu gerçekleştirebilir.


Fakat arka ucunda, o zaman çok az sayıda geliştirici ve çok ağır bir backot vardı, bu yüzden sonunda tamamen arka ucuna geçtim. Şimdi yaptığım şey, Blackender'ın klasik görevleridir - MicroService, Chiny Bugi'nizde bir kod yazıyorum, Refactoring ile uğraşıyorum, Kotlin'i kavrayacağım. Şirketin taze ürünü üzerinde çalışmak için bir fırsat var - Qiwi yatırımcısı.


Bu arada, bu iki yıl boyunca bir şekilde ortaya çıktığını söyleyemem, ön tarafta yürüdüğümde, orada olduğu, nerede gelişeceğini açıkça gördüm. Örneğin, şimdi mobil geliştirme ekibinde neler olduğunu görüyorum ve orada kalacağımı anlıyorum, erkeklerle daha fazla büyümeye devam edeceğim.


Öyleyse burada bir kazan-kazan durumu vardı - ekibe ve ürüne yardım etmek istedim (gelişimdeki avantaj, arka taraflara doğru değildi) ve yeni bilgi kazanıyor. Timlids her şeyi anladı ve hiçbir şikayet olmadan gitmeme izin ver.


Buna ek olarak, bir platforma eklenmemek için çeşitlendirmek istediğim bilgi (Android biraz sevmiyorum, ama Apple hala pozisyonu verir). Bir çeşit havalı fikri aniden görünürse, kendiniz (ve ön ve destek) bir başvuru yapabilecekleri ve kendinize bir başvuru yapabilecekleri bir arzu vardı. Şimdiye kadar, olsa da yararlı değildi.

Arka uç.


Tabii ki, böyle bir geçişle karşılaştığınız ilk sorun maçta boşluklardır. Benim durumumda, bunlar veritabanları ile çalışmanın bazı inceleriydi, ancak burada hem eğitime hem de takımı kendi kendine eğitme yeteneğinin hem de her zaman yardım etmeye hem de her zaman bir şeyi ayrıntılı olarak açıklamaya yardımcı oldu. Qiwi'de, ilke olarak, herhangi bir aşamada öğrenme ile her şey yolunda, en azından işin başlangıcında, en azından genç olup olmadığınız, en azından bu bir kaç yıl sonra küre nasıl karar verilir ve değiştirilir.


İlk defa bu kadar etkili değil, çok etkili bir şekilde çalıştığımda hiç kimse sinirlenmiyordu, çünkü çok fazla girmem gerekiyordu (ancak uzun vadede takım hala kazanıyor).


Tabii ki, farklı alanlarda - mobil oyunlar ve web'de küçük bir deneyim yaşadım, ancak hepsi, daha ziyade, pratik ciddi bir deneyime sokmak yerine, kendi hissetmeye çalışır.

Öndenden sonra arka ucun izlenimleri

UI ile çalışma yok. Hiç. Daha önce, UI'deki hataları düzeltmek için zaman öldürmek zorunda kaldım, şimdi yok. Böyle bir pozisyonun eksileri - Son kullanıcı, önündeki gibi, özellikle işimin sonuçlarını görmez. Ne kadar zor - destek veya cepheyi belirlemeye çalıştım ve (şahsen benim için) her zaman çoklu otlak ve bir ağ yığını ile çalışmak için daha ağır olduğunu fark ettim. Ve işte artık çok önemli değil - sen ön ya da arkadan. Önünde, sadece ilk defa, hazırlık yapmadan ve arka ucunda, herhangi bir deneyimle karşılaştım.


Herhangi bir alanda deneyim kazanmak ve serin bir şey yapmak mümkündür, bir arzu ve önkoşul olacak, burada bir şeyler yapmak (ve iyi) ve güvenli ve kolay bir şekilde desteklenen çalışmalar yapılması için uygulamalar var. Ve ayakta için ön taraftaki deneyimin varlığını veya yokluğundan çok önemli değildir. Geliştirici tüm küçük şeyleri dikkate alırsa, köşe vaka tereddüt eder ve bir bütün olarak API'nin nasıl kullanacağını anlar, o zaman bunu olması gerektiği gibi yapacaktır.


Keşfetmek benim için daha kolay olası sorunlar Sadece mobil uygulamalarımızın uygulanmasının özelliklerini bildiğim için. Ancak bu bir tür süperpozitöz değil - bu, genellikle cephelerle birlikte çalışan herhangi bir becerilendir.

Sonunda

Arka uç geliştirme benim için başka bir deneyim haline geldi - kod yazmayı ve revw yazmayı, mimariyi düşünmeyi öğrendim. Aslında ilginç.


Fakat aynı zamanda, ön cephenin geri döndüğünü, arkadaki kariyerin başlangıcında hemen seçeceğini söylemeyeceğim. Ürünümün kullanıcıları nasıl algıladığını görmem ve anlamak benim için hala önemlidir. Arka başında, hepsi oldukça hayalet.


Büyük olasılıkla, şimdi küreyi seçmek, Gamedev'e veya web cephesine giderdim. Web, yeni ürünlerin piyasaya sürülmesi için hala iyi bir platform olmaya devam ediyor ve aynı zamanda korkunç ve anlamayı zorlaştırmaktan vazgeçti. Spagetti Kodundan ve Callback-Cehennemden bu derslerin tümü, neyse ki geride kaldı.

Frontend bir gelişmedir kullanıcı arayüzü ve web sitesinin veya uygulamanın istemci tarafında çalışan işlevsellik. Bu tür bir gelişme, kullanıcının gördüğü her şeye, Web sayfasını açarak bağlanabilir. Frontend Developer, uygun ve istihdam edilen bir ürün oluşturmak için tasarımcılar, programcılar ve UX analistleriyle işbirliği yapar.

Hangi cephenin gelişiminin olduğunu açıkça anlamak için, herhangi bir sitenin sayfasını açın - önünüzdeki arayüzü göreceksiniz. Sağ tıklatarak, bu sayfanın kodunu tarayıcıda görebilirsiniz.

Bu kod bir önden çıkanlığın bir örneğidir, kullanıcının tarayıcısına indirilir ve kendi gözlerimle görebilirsiniz. Sayfa kodu, kendinizin önünde gördüğünüz her şeyi açıklar: renkler, düzen, yazı tipleri, grafik öğelerinin yeri vb.

Frontend Geliştirme şunları içerir:

  • HTML (HyperText Markup Dili) - Sayfa yapısının oluşturulduğu belge işaretinin dili: başlıklar, paragraflar, listeler vb.;
  • CSS (basamaklı stil sayfaları) - Tanım ve stilizasyon için dil dışarıdan görünüm Belge. CSS kodu sayesinde, tarayıcınız öğeleri nasıl gösterileceğini anlar. CSS, renkleri ve yazı tipi parametrelerini belirtir, farklı site bloklarının nasıl yerleştirileceğini belirler. Aynı belgeyi farklı stillerde, örneğin, yazdırma (geleneksel veya braille font), ekranı veya okuma sesi çıkarmak için aynı belgeyi vermenizi sağlar;
  • Javascript. - Bu, web sayfalarını canlandırmak için oluşturulan dildir. Görevi, kullanıcı işlemlerine cevap vermek, fare üzerindeki tıklamaları tutturmak, imleci, tuş vuruşlarını hareket ettirin. Ayrıca sunucuya istek gönderir ve verileri sayfayı yeniden başlatmadan yükler, mesaj girmenizi sağlar.

Arka uç geliştirme nedir?

Arka uç geliştirme, sitenin mantığının uygulandığı bir donanım-yazılım kümesidir. Basitçe konuşursak, kullanıcının gözünden gizlenmiş olan budur ve tarayıcısı ve bilgisayarının dışında meydana gelir.

Örneğin, arama sayfasında bir istek girdiğinizde ve tuşuna tıklayın. GİRİŞÖnlenti biter ve arka tarafa başlar. İsteğiniz sunucuya gönderilir. Google veya YandexArama algoritmalarının bulunduğu yer. Tüm "sihir" oluyor. Aradığınız bilgileri, monitörde ön kenar bölgesine dönüşü belirdi.

Ve büyük ve büyük, sunucu aynı bilgisayardır, sadece daha güçlüdür. Verileri saklar ve kullanıcı isteklerine cevap verir.

Arka uç, sunucuyu kullanıcı ile birleştirmenin işlemidir.

Arka uç geliştirici, sunucusunda mevcut olan aletleri uygulayabilir. Örneğin, evrensel programlama dillerinden herhangi birini seçme hakkına sahiptir. Ruby, PHP, Python, Java.

Ayrıca kullanılan arka uç geliştirme için farklı sistemler Veritabanı Yönetimi:

  1. Mysql;
  2. Postgresql;
  3. Sqlite;
  4. MONGODB.

Ürün türüne bağlı olarak, bir arka uç geliştirici görevi büyük ölçüde değişebilir. Böyle bir uzman, veritabanlarını oluşturabilir ve entegre edebilir, güvenliği sağlayabilir, teknolojiler oluşturabilir. rezerv kopyası ve iyileşme.

Sınır ve arka uç nasıl etkileşime girer?

Sınır ve arka uç bir daire içinde etkileşime girer: Frontend, kullanıcı bilgilerini arka ucunda gönderir, işlenir ve geri döner ve geri döner.

Kural olarak, farklı uzmanlar bu tür işlerle uğraşırlar, ancak meslektaşlarının çalıştığı ilkeleri anlamak arzu edilir. Örneğin, arayüz tasarımcısı, en azından genel olarak genel olarak, nişanlandığı projenin bir backetinin ne olduğunu bilmek. Bu, teknik yeteneklerin sitede veya uygulamada ne olabileceğini yeterince takdir etmesine yardımcı olacaktır.

Önlenti ve arka ucunun etkileşimi için birkaç seçenek vardır:

  • HTTP isteği doğrudan sunucuya gönderilir, sunucu bilgi arıyor, şablona yerleştirir ve bir HTML sayfası olarak döndürür;
  • Araçları kullanarak seçenek AJAX (Asenkron Javascript ve XML). Bu durumda, istek gönderir Javascript.Tarayıcıya indirildi ve cevap XML veya JSON formatında geliyor;
  • Sayfayı güncellemeden veri indiren tek sayfalı uygulamalar. Bu da yapılır ajax yardım veya FreyMvorkov Açısal ve köz.;
  • Kor. veya kütüphane Tepki Uygulamayı ve sunucuyu ve istemciyi kullanmaya yardımcı olun. Sunucuda işlenen AJAX ve HTML kodu üzerinden ön ve arka uç.

Gördüğümüz gibi, modern gelişme, iki bölüme ayrılmış olan karmaşık ve çok seviyeli bir işlemdir: Müşteri ve Sunucu. Arsenal cephesinde ve arka uç programcılarında, seçimi, projenin görevlerine ve karmaşıklığına bağlı olan birçok araç vardır. Her iki gelişme türü de teknik ve yaratıcı bileşenler içerir.

Önden ve arka uç geliştiricilerin sorumlulukları genellikle bölünür, ancak programcının hem sunucu tarafında hem de istemci bölümünde ortaya çıkan sorunları çözmesi gereken zamanlar var. Genellikle piyasada, hem ön ucunda hem de arka ucunda güvenle hisseden uzmanları karşılayabilir ve iki tür işi birleştirebilir.

12 aylık bir SkilleBox'tan cepheden ve arka uç geliştirme biçiminize başlayabilirsiniz. Yeni gelenler ve programcılar için küçük deneyime sahip olanlar için uygundur. Yıl boyunca, öğrencilerin pratikte dinleyicileri ana programlama dillerini keşfedecek ve vaat eden ve iyi ücretli iş bulmaya yardımcı olacak kendi portföylerini yaratacak.