Genel unix becerileri için biriyle görüşme [kapalı]


20

* Nix kabuk deneyimine sahip olduğunu iddia eden bir geliştiriciyi nasıl test edersiniz (sadece açık olmak gerekirse, birisinin * nix üzerinde gelişip gelişemeyeceğini test etmek istemiyoruz, sadece komut satırı çevresinde yollarını bildiğini).

Kedi, grep, kes, ... gibi bazı temel bilgileri içeren günlük dosyalarından bilgi alma problemini çözmelerini düşünüyordum.

Başka hangi temel bilgileri istersiniz? Bir kez daha, bu, * nix sistemleri için geliştirilecek biriyle röportaj yapmak için değil, aynı zamanda * nix sistemi yöneticileri için değil, sadece bazen * nix sistemi üzerinde bazı işler yapması gereken düzenli geliştiriciler için.


Bu tür bir kabuk eğitimi, programlama dilini zaten bilen herkes için pastadır. Ne zamandan beri insanlar görüşmecilerin gerçeğin özgeçmişlerinde biraz daha hoş görünüp görünmediğini umursuyor? Bu her zaman olur. Bana küçük geliyor.
Yam Marcovic

@YamMarcovic - "Bu etruth biraz daha hoş görünmesini sağlamak" derseniz, "sahip olmadığı beceri düzeyleri iddia" diyor musunuz? Eğer öyleyse, röportaj sırasında bunu öğrenmek için oldukça alakalı olduğunu söyleyebilirim. Kapıdan geçmek için yalan söylerlerse, içeride bir kez onlara nasıl güvenebilirim?
Vatin

@Vatine Çünkü en azından deneyimlerime göre, herkes özgeçmişlerdeki beceri seviyelerini abartıyor. Bu insanları diskalifiye ettiyseniz, dogmatik olarak dürüst veya naif insanları işe almaya daralmışsınızdır. Bu çok daha az seçenek.
Yam Marcovic

Yanıtlar:


13

Bir * nix sistemi üzerinde çalışan kişisel deneyim geliştiricimin bilmesi gerekenler:

  • kabuk değişkenleri (PATH gibi özel olanlar hakkında nasıl ayarlanır / alınır + bilgi alınır)
  • kabuk yeniden yönlendirme (bir programın çıktısını yakalama)
  • borular (günlük dosyasından bazı bilgilerin çıkarılması mükemmel bir örnektir)
  • süreç kontrolü (ps, nice / renice, kill)
  • dosya erişim hakları (ls / chmod / chown / chattr)
  • kullanıcılar (ancak çoğunlukla dosyalar / işlemler bağlamında, yani: bu işlem bu dosyaya erişebiliyor mu? neden bulabilir / yapamıyor?)

... ve bonus olarak:

  • sistem hizmetlerini başlatma / durdurma

Böyle bir beceri seti, geliştirici ile ilgili görevlerin çoğunun kolaylıkla yapılmasına izin verir.


Güzel cevap. Sistem hizmetlerini başlatmak / durdurmak için hangi komutlar kullanılır?
Tim

11

Çalışmaya başladığımdan beri çok sayıda meslektaşımla yaşadığım deneyimden kimse Unix bilgisini taklit etmek istemiyor: ya " komut satırında yollarını biliyorlar " ya da sadece "hiçbir şekilde!" Diyorlar.

Adayın bir Unix iş istasyonunda çalışmaya istekli olup olmadığını sorun ve bash'a ne kadar sürebileceğini söylemesine izin verin. Sonunda bazı komutları adlandıracak; En belirgin olanları cd, cat, moreveya less, viya emacs, grep, awk, sed. Söz edip etmediğini dikkatlice dinleyin man.

O geliştirmek için ise, o aşina olmalıdır makeve Makefiles ve bazı kaynak kontrol komut satırı arayüzü ( svn, git, cleartool, hg, cvs...)


4
Biliyorum manve Google yardım etmediğinde kullanıyorum, ama asla komut listemde gündeme getirmem ...
Mehrdad

3
mançevrimdışıyken unix komut satırı ve C kitaplıkları hakkında bilgi edinmenin en etkili yoludur. Bu arada, internette arama yapmak için en gelişmiş araç Unix'i öğrendimtelnet archie.cs.mcgill.ca
mouviciel


@mouviciel: Çevrimiçi olduğunuzda unix komut satırı hakkında en etkili öğrenmeyi de öğrenebilirsiniz , çünkü çoğu forum komutlarla ilgili ayrıntılar sorarsanız rtfm'ye 'yardımcı olur'. Man sayfaları inanılmaz derecede kıvrık değilse ve belgelerinde gezinmek zor değilse bu iyi olmalıdır. Neyse ki yığın akışı var!
Joren

Bunu bilmiyorum. Man sayfalarını aşırı derecede kullanıyorum ve alıştıktan sonra hiç sorun yaşamadım. Aradığınızı bulmak için çok kolay. Bölümleriniz var, "Ayrıca Bakınız" 'leriniz var ve her şeyi bir düğmeyi tıklayarak arayabilirsiniz. Her komut ve her sistem çağrısı için bir man sayfası ve oldukça az kütüphane çağrısı alırsınız. UNIX'i çok fazla sevmemi sağlayan adam sayfaları olduğunu söyleyebilirim.
Yam Marcovic

10

Bunu neden yaptın?

* Nix kabukları (ve diğer OS kabukları, fwiw) çok derin ve geniş çalışma ortamlarıdır. Birinin yıllarca orada çalışarak mermilerin kapasitesinin sadece çok küçük bir kısmını kullanması mümkündür.

Kişinin a) kabuk programından veya b) sistemi kabuktan yönetmesini beklemiyorsanız, neden önemlidir? Yapılan her şey o kadar basit bir seviyede olacak ki, kullanışlı bir * nix hile sayfası "beceri eksikliğini" telafi etmekten daha fazlasını yapacak.


Bu bir dürüstlük kontrolü. Eğer birisi özgeçmişini özgeçmişine koyarsa (ki bu gerçekten gerekli değildir), iddia edilen becerilerin ne olduğunu kontrol etmek istiyorum. Sadece cd ve ls kullanabiliyorsanız, unix deneyimi imo iddiasında bulunmamalısınız.
Christophe Vanfleteren

O zaman onlara hangi Unix sistemlerini kullandıklarını sorardım ve Unix sistemleri ile muhtemelen Linux / Mac arasındaki farkları listelemelerini istedim
johannes

1
@Christophe - İşte anlaşma ... önemli değil, çünkü muhtemelen sizin için çalışmayacaklar. Potansiyel işveren böyle aptalca dublörler çekmeye başladığında, görüşmeci için büyük bir kırmızı bayrak çünkü özgeçmişte ne olduğuna güvenmiyorlar. "Test" iniz ve bunun gerekçesi, temelde bir bok şirketinde bir bok işi yapmak için birini işe almaya çalıştığınızı söylüyor. Yanılıyor olabilirim ama sanmıyorum. Ancak yanılıyorsam, “beklentilerinizi” yeniden değerlendirmenizi öneririm.
Joe Internet

1
@Yam - Öyle diyor ki ... eğer işe alıyorsanız ve birisi size yapıldığına inandığınız bir özgeçmiş gönderirse, o kişiyle röportaj yapmazsınız. Ne yok do itiraf a) konumunun gereksinimlerine herhangi bir etkisinin olmadığını bazı saçma test oluşturmak ve b) bu sadece birilerinin iddia deneyimi "dürüstlük" test etmek üzere tasarlanmıştır itiraf. Eğer birisi "dürüstlüklerini" sorgulamadan OP'nin şirketinde röportaj bile alamazsa, * nix kabuğunu kullandıklarını söyledikleri için şirket hakkında ne diyor? Bana göre, bok şirketindeki bok işi. YMMV.
Joe Internet

1
@Christophe - Yetenekli * nix programcıları kiralıyorsanız, IMO "komut satırı çevresinde yollarını bildiklerini" varsaymak doğru olur. Yetenekli diğer işletim sistemi geliştiricilerini işe alıyorsanız, IMO * nix komut satırı becerilerinin minimum düzeyde olduğunu varsaymak adil olur. A grubunun test edilmesine gerek yoktur, B grubu otomatik olarak başarısız olur, bu yüzden neden onları test etmekten rahatsız oluyorsunuz? Bir yazılım geliştiricisini işe alma ölçütleriniz komut satırını ne kadar iyi kullandıklarına dayanıyorsa, işe alma sürecinizin kusurlu olduğunu düşünüyorum. Kabuk komut dizisinin konumun ana sorumluluğu olması farklı olurdu.
Joe Internet

3

Başımın üstünden muhtemelen onlara iki şey sorardım:

  1. Daha önce * nix komut satırını kullandığınızda, iyi düşünülmüş bir komutun size çok zaman kazandığı bir durumla karşılaştınız mı? Eğer öyleyse, detaylandırın.

  2. Lütfen * nix komut satırı ile standart bir Windows masaüstü bilgisayar arasındaki büyük farkları açıklayın. Her birinin avantajları ve dezavantajları nelerdir?

Açıkçası, birincisi, başvuranın komut satırı hakkındaki bilgisinin ne kadar derin olduğuna dair bir gösterge verecektir. Yıllarca bir * nix üzerinde çalıştıysa, sadece bir grep yapmaktan gurur duyduğunu söylemez. Elbette onların kesin komutlarını hatırlamalarını beklemeyin (bunun için her zaman mangajlar vardır), ancak yaptıklarıyla ilgili genel fikir.

İkinci soru bunun yerine, komut satırının gerçekten neyin iyi olduğunu ve bunun uygun bir araç olmadığını anlayıp anlamadığını kontrol eder. Bir çekiç kullanmayı öğrenmek kolaydır, ancak çekiç uygun değilse başka bir alete geçmek çok daha zordur. Bu soru size * nix kutusunun dışında başvuranın görüşünün iyi bir göstergesidir, ayrıca bilgisiyle puan alabilmesi (ve yapması) için yeterince açıktır. ("Pencerelerde şu pencereler var" gibi bir şeyi cevaplamaktan daha kötü bir şey yoktur)


2

Ne yapmalarını istediğinize bağlıdır.

İçin günlük dışında bilgi almak dosyaları + grep çok mantıklı kedi için önerinizi. Buna ls, cd ve daha az / daha fazlasını eklerdim.

Ayrıca bazı küçük düzenlemeler yapmasını bekliyorsanız (örneğin, yapılandırma dosyalarında), vi ve / veya emac'lar ve cp / mv / rm / mkdir gibi şeyler için test eklemek mantıklı olacaktır.


1
vi komutlarının test edilmesi, sheesh, hepsini biliyorlarsa daha fazla endişelenirdim
NimChimpsky

1
adam Google için ulaşır ve " vi Editör komutları " gibi arama alanı şeyler yazmaya başlarsa o zaman test% 90 geçti düşünün :)
gnat

1

Emacs veya vi / m, katran, sed, e / f / grep, çeşitli derleyiciler, bazı kabuk komut dosyaları bilmelerini tavsiye ederim. Belki de bir dosyayı açmadan bir dosyadan kod almak için başka bir programa eklemek için bu araçları kullanmak zorunda oldukları bir test çalıştırın; daha sonra bazı önemsiz hatalara yol açacak programı derleyin. Daha sonra içeri girmek ve hatayı bulmak, kodu çalıştırmak ve ikili dosyayı arşivlemek için bir metin editörü kullanmaları gerekir. Ardından, alıcıya çalıştırması için izin verirken bir yere postalayın.


1

Seni bilmiyorum, ama görüşmeci bana sorarsa ve Linux'ta nasıl çalışacağımı bilmiyorsam biraz rahatsız olurdum.

Şu anda bildiklerini gerçekten önemsememelisiniz , ancak şans verilirse ne öğrenebileceklerini umursamalısınız . * Nix araçlarını öğrenmek çok zor değildir, ancak biraz kararlılık gerektirir - gerçekten bilgi yerine yetenekleri test etmelisiniz.


2
ama öğrenmemek için iş yapmak için adaylarla görüşüyorsunuz.
NoChance

1
-1 @Emmad. Yani hiç bir işte hiçbir şey öğrenmedin mi?

3
-1 @EmmadKareem tüm işler bir şekilde öğreniyor.
Nicholas Smith

Evet öğrenme bir dereceye kadar bekleniyor, ancak rol önemsiz değilse, adayın işe alınmasının yaklaşık 2 hafta içinde üretken olmasını bekliyorum, Kanada'da ortalama bana 3000 dolara mal olacak! Beceri nadir olmadıkça, beklediğim budur.
NoChance

Emmad, OP ile birlikte çalışmak istemediğim bir insan gibi geliyor.
kirk.burleson

1

Hangi düzeyde deneyime sahip olmasını istediğinize bağlıdır. Bu, * nix sistemleri için geliştirilecek biri için değil, aynı zamanda * nix sistemi yöneticileri için değil, yalnızca bir * nix sistemi üzerinde bazı işler yapması gereken düzenli geliştiriciler için gerçekten ne kadar deneyime ihtiyaç duyarlar?

Böyle bir geliştiricinin * nix kabuklarında (ls, chmod, cat vb.) İhtiyaç duyabileceği her şey muhtemelen tek sayfalık bir hile sayfasına yazılabilir. Eğer öyleyse, gerekli olmadığı yerlerde * nix kabuk bilgisine ihtiyaç duyulması bazı iyi adayları ortadan kaldırabilir.


0

Genellikle basit bir görev seçer ve kişiden beyaz tahtaya bir kabuk komut dosyası yazmasını isterim.

"Foo" ve "foo_backup" adlı bir yedekleme dizininiz var. "Foo_backup" değiştiği için "foo" da nelerin değiştiğini görmek için bir kabuk betiği yazın.


0

'Linux'ta oturum açma işlemini rahat hissettiğiniz kadar ayrıntılı olarak açıklayın' iyi bir soru. Oturum açma işlemi, kullanıcıların, izinlerin ve sahipliklerin ve birçok genel Unix felsefesinin değiştirilmesini içerir. Nasıl ve neden orada bir açıkça açıklayabilir ise /etc/passwdve /etc/shadowve nasıl olmayan bir prived kullanıcının Unix olsun onlar araçlarının, 'kendi şifrelerini fakat diğerlerini değiştirebilir.

Bir diğeri de günlük ayrıştırma veya hızlı güvenlik denetimleri olan herhangi bir şeydir. Bir Apache günlüğünden belirli bir sankon için sunulan toplam bant genişliğini toplayabilir veya sistemde 0 kullanıcı kimliğine sahip başka kullanıcılar olup olmadığını bulabilirlerse, komut satırında kullanışlıdırlar.

Ve onlara YAPMAMASI gereken bir şey: onları kağıt / beyaz tahtada yapmayın. Onlara canlı bir sistem verin (ama internet yok çünkü neredeyse hile yapıyor) ve gitmelerini izleyin. Eğer adam sayfalarında yollarını biliyorlarsa ve anında çok borulu ifadeler oluşturabilirlerse, bu iyi bir işarettir. Her şey için google'a ihtiyaç duyarlarsa, beceri setleri tartışmalıdır.


0

neden işlevsel bir program yazsınlar? "grep ve sed arasındaki farkı söyle, ya da X komutu ne işe yarar? vb." derken yanlış olan şey, onları biraz yönlendirebilirsin.

kendilerine verdiğiniz belirli ödeve karışırlarsa, akıllı olduklarını düşünmeyebilirsiniz. ancak genel sorular sorarsanız, onlara bildiklerini gösterme şansı verirsiniz, bu da önemli olabilir, ancak merak ettiğinizden farklı bir şekilde.


-1

Unix gurular, tek parmağında sed, grep vb.Gibi temel komut satırı komutlarına sahiptir ve her türlü alıntıyı, gelişmiş düzenli ifadeleri vb. Kullanarak istediklerini elde etmek için bunları kolayca kullanabilir, böylece bazen komut dosyasını görürsünüz ve Çince yazılmış beeing anlamak daha kolay;)

Kabuk programlamasından bağımsız olarak, Perl gibi en az bir ek kodlama dili bilmesini bekleyebilirsiniz.

Unix sisteminin yapılandırma iç bileşenlerini bilirler, bu yüzden klavye düzenini değiştirmelerini isterseniz (fg sağ alt + 'ya bazı ciltleme ekleyin) karıştırılmazlar.

Kurulu paketleri yönetmek de sorun olmaz. Oracle'ı yüklemek, her biri diğer JVM'li 4 uygulama sunucusu çalıştırmak - aynı zamanda sorun yok. Sanal ağ yapılandırması, gelişmiş yönlendirme ve port filtreleme, sanal makineler vb., Güvenliği yönetme - oraya da gider.


2
Soru, bir geliştiricinin, Oracle ve Java'ya özellikle odaklanan guru sistem yöneticilerini tanımlamak yerine genel Unix becerilerine sahip olup olmadığını test etmektir.
Peter Taylor

JVN? Yahudi Gönüllüler Ağı'nın bununla ne ilgisi var?
ocodo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.