ne tür bilgiler veya sorular bir kişinin OOAD becerilerini belirlemenize yol açacaktır.
ne tür bilgiler veya sorular bir kişinin OOAD becerilerini belirlemenize yol açacaktır.
Yanıtlar:
Basit bir problemin yarı yamaçlı OO tasarımını gösterebilir ve ne yaptığını, neyin iyi ve kötü olduğunu, yeterince esnek olup olmadığını, neyin geliştirilebileceğini ve nasıl yapılacağını tartışabilirsiniz.
Tartışmayı başlatmanız gerekiyorsa, kişinin kodun bazı yönleri hakkında ne düşündüğünü sorun, ancak önde gelen bir soru ile değil.
Önemli olan cevapları önceden bildiğinizden değil, tartışmanın önemli olduğunu hatırlamaktır. İyi bir geliştirici, daha önce düşünmediğiniz kod hakkında bir şey işaret edebilmelidir.
Açık uçlu tasarım problemini kişiyle tartışın. Sistemin bir modelini nasıl geliştirdiğini, ne tür sorular sorulduğunu, yeni bilgilere yanıt olarak tasarımın nasıl değiştiğini görün.
Steve Yegge tarafından blog yayınlarından birinde bahsedilen harika bir örnek, kişiden XML için bir nesne modeli bulmasını istemektir.
Tüm en popüler tasarım desenleri hakkında iyi bir bilgiye sahip olmak , adayın tasarım sorunlarına çözüm aradığını kanıtlayabilir.
Onları tartışabilmek ve ne zaman uygulayacağınızı bilmek, onları anladığının iyi bir göstergesidir.
Örneğin geçmiş deneyimlerindeki kullanımlarını istemek de yardımcı olabilir.
Do not bir kelime sınava tabi. "Miras Tanımla" veya "OO tasarımının 3. adı özellikleri", bireyin becerileri hakkında hiçbir şey anlatmayacak, sadece bir ders kitabını en son ne zaman okuduğuna dair sorulardır. Her gün bu becerileri kullanan birkaç harika programcı ile tanıştım, ancak resmi tanım vermesi istendiğinde boğulurdu.
Mümkünse örnek kod isteyin.
Aksi takdirde, örnek olarak kullanılacak bazı prosedür kodlarını (veya kötü tasarlanmış bir OO kodunu) bulun ve daha sonra nasıl yeniden tasarlayacaklarını, genelleştireceklerini ve geliştireceklerini sorun. Yeniden tasarımın anlamlı olabilmesi için programın fazladan içeriğe sahip olduğundan emin olun.
Sonuçta test ettiğiniz şey - tasarım - özneldir. Bu nedenle, değerlendirmeniz sadece tek bir çözüm değil, birkaç olası iyi çözüme olanak sağlamak için açık uçlu olmalıdır. Ardından, bir arabirim değişikliğini zorlayacak gereksinimlerdeki olası değişiklikleri düşünün: Bunu nasıl ele alırlar?
İlk Tasarım Desenleri kitabını okuyun. Kitaptaki tüm örnekler Nesneye Dayalı bir problemle başlar ve Tasarım deseninde son bulur. Ayrıca belirli OOP kavramlarının neden sınırlı sonuçlar elde edeceğini ve bazılarının neden diğerlerinden daha iyi olduğunu da söylüyorlar.
Bir Tasarım Desen kitabı olmasına rağmen bu kitap OOP'un problemleriyle dolu :-)
Başlamak basit: OOP ne hakkında?
OOP'nin temel öncüllerini sorarak başlayabilirsiniz: soyutlama, polimorfizm, kalıtım ve kapsülleme. Onları ısıtmak için düşünce için iyi yemek.
Onlara bir problem ver
Daha sonra, onlara kalıpları içerebilecek bir sorun sunun. Kalıpları adlandırmak veya kullanmak gerekli değildir, ancak yaklaşımları bölgede deneyimleri varsa muhtemelen biraz verilecektir.
Belki de dinamik metin girişi doğrulaması. Geçerli bir tarih, saat veya tarih ve saatin ISO8601 biçiminde olup olmadığını görmek için giriş karakterini karaktere göre doğrulamak istiyorsunuz. Bir tuşa her basıldığında giriş dizesinin bir kopyasını alırsınız ve metnin formatlardan en az birinde iyi kalıp kalmadığını belirtmek için bir boole döndürebilirsiniz. Onlardan OO tasarım ilkelerini kullanarak bir tasarım yapmasını ve taslak çizmelerini isteyin.
Hakkında konuşmayı bitirene kadar
OOD'u anlarlarsa oldukça iyi bir fikriniz olacak.
Onlara tekrar aynı sorunu verin, ama bu sefer farklı bir tasarım isteyin
Şimdi, bir Gözlemci kalıbı kullanmadan sistemi yeniden tasarlamalarını isteyin (eğer belirtmişlerse) - bir Sorumluluk Zinciri yaklaşımı veya belki de bir Komut kalıbı seçmeyi seçebilirler. Hangisini umursamıyorsunuz, ilgili ilkeleri makul bir şekilde kavradığını biliyorsunuz.
Örüntü temelli bir yaklaşım için gitmeseler bile, sadece problemi ilgili işlevselliğine bölmeye çalıştıkları yolu dinlemek peşinde olduğunuz sonuçları verecektir.
Herkes tarafından iyi bilinen gerçek bir dünya senaryosu seçme eğilimindeyim ve onlardan varlıkları tanımlamalarını isterim; ilgili aktörler; aralarında hangi etkileşimler var; ortak özelliklerin soyutlanabileceği yerler; hangi özelliklerin dikkate alınması gerektiğini.
Evet, onlardan oturup UML'yi çizmelerini isteyebilirsiniz, evet onlardan bazı OOP uygulama özellikleriyle ilgili soruları aramalarını isteyerek "çalışmakta olup olmadıklarını" görmek isteyebilirsiniz.
Ancak bir işverenin ekibinde gerçekten ihtiyaç duyduğu şey, söz konusu kavramları anlayan ve ortaya çıkan her şeye uygulayabilen bir zihindir. Kavramlar yerleştirildiğinde ayrıntılar hızlı bir şekilde öğrenilebilir.
† Derin aşinalık ve kod yardımı ile bağlantı olmaması: Bir ailenin sabah banyo kullanması; akşam yemeği pişirmek; çalışmak için bir otobüs güzergahı; bir araba montajı.
Oldukça iyi görünen ve aslında sadece birkaç saniye süren bir şey: onlardan bir nesne modeli tasarlamalarını isteyin. Ne için önemli değil. Kesinlikle önemsiz olabilir. Aslında, testi gereksiz yere sürüklememek muhtemelen önemsiz olmalıdır.
Yazdıkları ilk şey bir nesne ise, OO anlayışında akranlarının% 99'undan zaten öndeler. Yazdıkları ilk şey bir sınıfsa, onlardan dışarı çıkıp bir sonraki adayı göndermelerini isteyin ve neden COP değil OOP olarak adlandırıldığını düşünün.