بایسته های یک برنامه نویس نمونه سوالات استخدامی حوزه نرم افزار
s: برنامه نویسی | تخصصی | نرم افزار چندي پيش مقاله اي در سايت نکات دات نت راجع به نمونه سوالات آزمون استخدامي برنامه نويسان ارشد ديدم که به نظرم جالب آمد. بخصوص از اين جهت که به عنوان يک کارشناس ارشد نرم افزار فقط چندتايي از اين سوالات را بلد بودم ، که واقعاً بايد به خودم دست مريزاد بگويم . نمونه سوالات اينها بودند : آيا هنوز كد مينويسيد؟ آيا به آن علاقمنديد؟! آيا ميدانيد SOLID چيست؟ آيا ميدانيد SRP مخفف چيست و چه اهميتي دارد؟ پروژهاي مبتني بر يك فناوري جديد به شما انتساب داده شده است. چگونه آنرا آغاز خواهيد كرد؟ در مورد IOC يا Inversion of control چه ميدانيد؟ ارتباط آن با dependency injection چيست؟ برنامه 2 tier با برنامهي 3 tier چه تفاوتي دارد؟ فلسفهي وجودي Interface چيست و چه اهميتي دارد؟ الگوي Repository را شرح دهيد. الگوي Factory چيست؟ چرا الگوهاي طراحي برنامه نويسي شيءگرا مهم هستند؟ Anti-patterns كدامند؟ توضيح دهيد. آيا تابحال اسم Gang of Four به گوشتان خورده است؟ در چه موردي است؟ ارتباط الگوهاي MVP ، MVC و MVVM در چيست؟ هر كدام از اين الگوها در چه زمانيهايي بهتر است بكار گرفته شوند؟ مفهوم جداسازي وابستگيها (Separation of Concerns) چيست. مزايا و معايب آن كدامند؟ سه ويژگي اصلي طراحي شيءگرا را نام برده و توضيح دهيد. يك الگوي طراحي را توضيح دهيد كه در خانوادهي الگوي Factory قرار نميگيرد. اين الگو چه زماني بهتر است بكار برده شود و چگونه؟ فرض كنيد يك پروژهي قديمي را كه از مشكلات حاد نگهداري رنج ميبرد، به شما انتساب دادهاند. چه فاكتورها و اقداماتي را جهت بهبود اين وضعيت درنظر گرفته و چگونه برنامه را به سمت يك پروژهي پايدار پيش خواهيد برد؟ مفهوم Service Orientation چه اثري را بر طراحي سيستمها خواهد گذاشت؟ كجاها بهتر است استفاده شود؟ در مورد portfolio تمام برنامههايي كه تاكنون بر روي آنها كار كردهايد توضيح دهيد. شما چه نقشي در طراحي آن داشتهايد؟ منهاي بانكهاي اطلاعاتي رابطهاي، با چه روشهايي جهت ذخيره سازي اطلاعات آشنايي داريد؟ مزايا و معايب آنها چيست؟ در مورد مفهوم convention over configuration توضيح دهيد. آخرين مثال عملي كه در اين مورد ديدهايد چه بوده است؟ در مورد سيستمهاي بدون حالت و با حالت (stateless and stateful) توضيح دهيد. اثر هر كدام بر parallelism چيست؟ تفاوتهاي بين Stubs و Mocks چيست و از هر كدام در كجاها استفاده خواهيد كرد؟ مفهوم YAGNI را به همراه يك مثال عملي توضيح دهيد. sandbox چه معنايي دارد؟ آيا ميتوانيد مثالهايي عملي از اين مفهوم را در سيستمهاي موجود نام ببريد؟ Concurrency به سوالات زير پاسخ دهيد: حالتهاي با و بدون قفل در مدلهاي Concurrency چه تفاوتي دارند؟ زمانيكه از مدلهاي با قفل و يا بدون قفل استفاده ميكنيد ممكن است به چه مشكلاتي برخورد كنيد؟ مفهوم resource contention را توضيح دهيد. مدل بر مبتني بر وظيفه با مدل مبتني بر ريسمان چه تفاوتهايي دارند؟ ( task-based model & threaded model ) تفاوتهاي بين asynchrony و concurrency را توضيح دهيد. اصل مقاله به زبان لاتين را از اين آدرس مي توانيد مشاهده کنيد که کاملتر از ليست فوق است. روز گذشته هم نمونه مهارت هاي لازم براي استخدام در يک سايت ايراني را ديدم که هر چند مانند فوق تخصصي نبود باز هم برايم جالب بود و بسياري از خواسته هاي آنان را جديد يافتم : ( مانند آخري که مدرک دانشگاهي هم نياز ندارند ......) پيش زمينه قوي در برنامه نويسي شيي گرا با زبانهايي مانند C# , Java مسلط به زبان انگليسي و توانايي فهم سريع مستندات انگليسي و پياده سازي دستور العملها پيش زمينه در script نويسي با زبانهايي مانند Python، Ruby، Perl تسلط بر کار با پايگاههاي داده مبتني بر SQL مانند Postgresql و MySQL علاقه مند به تحقيق و استفاده از زبانها، ابزارها و روشهاي جديد و به اشتراك گذاري اطلاعات آشنا به روش برنامه نويسي TDD و Agile آشنا به نرمافزار هاي Source Control مانند mercurry و git آشنا با روشهاي ذخيره سازي ،NoSQL مانند tokyo cabinet و redis آشنا با روشهاي آزمايش و خطايابي و ابزارهايي مانند JUnit آشنا به روشهاي برنامه نويسي Open Source سابقه استفاده از محيطهاي برنامه نويسي مانند Eclipse توانايي استفاده از ويرايشگر vim آشنا به ساختار Linux و سيستم عاملهاي ديگر براساس POSIX مانند Solaris آشنا به مباحث شبکه داراي روحيه و سابقه کار تيمي عدم نياز به مدرك دانشگاهي !!!