ما الأسئلة التي يطرحها مطور جونيور iOS في المقابلات الأولى

ماذا يريد أرباب العمل أن يسمعوا؟ ماذا تريد ان تعرف؟ إنهم يكتبون كثيرًا على الإنترنت ، ولكن في الواقع يلعب العامل البشري دورًا وأنت عالق في أسئلة بسيطة لم تكن مستعدًا لها.


مرحبا يا هابر. على مدى الأشهر السبعة الماضية ، تجاوزت المقابلات ، في مكان ما يزيد عن 20. كانوا جميعًا في منصب مطور جونيور iOS. ونتيجة لذلك ، بعد العديد من العذاب وعمليات السحب من الفروق الدقيقة المختلفة في تطوير الأجهزة المحمولة ، أعطوني عرضًا للشركة ، والذي كنت سعيدًا للغاية به.

أنا ، كشخص ليس لديه خبرة مبكرة في التنمية ، كخبير اقتصادي من خلال تدريب نفسي ، أود أن أشارك وأوضح قليلاً للشخص الذي قرر للتو أن يسلك هذا المسار ، وما ينبغي أن يتوقعه في المقابلات والأسئلة التي يحتاج بالتأكيد إلى طرحها أو تعلمها على الإطلاق.

سأكتب هنا فقط لوظائف مطوري Junior Swift iOS. لم تجر مقابلات أخرى حول تلك المواقف.

سوف أسرد الأشياء التي من المحتمل أن يطلب منك 99 ٪ ، ثم سأضيف بضع كلمات حول كل عنصر.

لذا ، لنبدأ.

ما سيطلبونه منك بالتأكيد (حسنًا ، إذا نسيت أن تسأل فجأة ، فمن الواضح أنهم يتوقعون منك أن تعرف هذا):

  • دورة حياة ViewController
  • عذرًا
  • الفرق بين الطبقة والبنية
  • البروتوكولات
  • طرق نقل البيانات بين وحدات التحكم
  • القصة المصورة أو xib
  • تخطيط تلقائي
  • حفظ البيانات (CoreData ، Realm ، UserDefault ، إلخ.)
  • الطلبات والعمل مع البيانات الواردة من الخادم (URLSession، Alamofire، Codable)
  • الإغلاق
  • خيارات
  • ملحقات
  • الوراثة
  • قوس
  • تعدد المواضيع (بشكل سطحي ، لن يحتاج أحد إلى معرفة متعمقة بدءًا من يونيو)
  • ضعيف ، غير مملوك ، خاص ، مهذب
  • الفرق بين الإطار والحدود
  • Cocoapods (SwiftPacketManager ، قرطاج)
  • شخص سخيف

سنناقش بإيجاز بضع نقاط.

  • دورة حياة ViewController

كل شيء بسيط هنا. إنهم يريدون أن يسمعوا منك:

viewDidLoad()
viewWillAppear(_ animated: Bool)
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)

لا تزال هناك بالطبع طرق ، ولكن هذه ستكون كافية من حيث المبدأ.

  • عذرًا

يمكنك بسهولة جوجل هذه اللحظة وقراءة ما هو موجود.

  • فئة مقابل الهيكل

هنا ، في الواقع ، بدا كل شيء بسيطًا ، ولكنك تحتاج حقًا إلى معرفة ما يختلفون فيه. يجب أن تفهم على الأقل في مثال أساسي ما ستنتجه الطباعة () ولماذا.

let customClass = EasyQuestion()
let a = customClass
let b = a
b.someProperty = 4
print(a.someProperty)

يجب أن تعرف ما هي الطباعة التي ستمنحك في هاتين الحالتين.

سيكون أيضًا ميزة إضافية إذا قمت بإضافة من يمكن أن يرث ViewControllers ، ومن منهم لا. (ملاحظة من Struct'a - لا)

  • البروتوكولات

اقرأ ما هو وما الذي يستخدمون من أجله (على الرغم من أنني أعتقد أنك سمعت عنهم بالفعل).
قد يسألون أيضًا عن تمديد البروتوكول. عليك أن تفهم بالضبط من هم المندوبون وكيف يعمل هذا الاتصال.

  • طرق نقل البيانات بين وحدات التحكم

سيكون كافيا بالنسبة لك لتسمية زوجين. طرق التفويض ، الإغلاق ، عن طريق init إذا قمنا بإنشاء ViewController عبر xib ، إلخ.

  • القصة المصورة أو xib

هنا سوف يُطلب منك على الأرجح ما إذا كنت قد أنشأت ViewController عبر xib. لن يطلبوا منك التفاصيل والتفاصيل. في يونيو ، ما زلت لا تعرف الكثير. الشيء الرئيسي الذي يجب عليهم فهمه هو ما إذا كان يمكنك كتابته. حسنًا ، سيكون من الضروري إعطاء إجابة لماذا تنشئ من خلال xib أو العكس.

  • تخطيط تلقائي

هنا يمكنك الرسم لفترة طويلة حول هذا الموضوع. أنصحك بجوجل ما هو عليه. فهم الجوهر العام ، سيكون هذا كافيا.

  • حفظ البيانات (CoreData ، Realm ، UserDefault ، إلخ.)

هذا السؤال سيطاردك لفترة طويلة. الشيء الأكثر أهمية هو معرفة متى تستخدم UserDefault ، ما الذي يجب حفظه في KeyChain ، ما هو Realm. قم بحفظ البيانات عدة مرات في مشاريعك المنزلية في CoreData بحيث يكون لديك فكرة عامة عن نوع الحيوان وكيفية ترويضه.

  • الطلبات والعمل مع البيانات الواردة من الخادم (URLSession، Alamofire، Codable)

هنا تحتاج إلى معرفة ما هو POST ، GET. سيتم طرح هذا.

يجب أن تكون قادرًا على معالجة الأخطاء عند الطلب. الخيار المثالي هو إذا تم إعطاؤك الشروط المرجعية للمنزل قبل المقابلة. هناك يمكنك إظهار القوة الكاملة لعقلك.

Alamofire شائع أيضًا في المشاريع ، لذلك يجب أن تكون قادرًا على استخدامه.
يجب أن تكون قادرًا على تحليل البيانات التي يرجعها الخادم إليك باستخدام Codable أو بعض المكتبات بروح SwiftyJSON أو ObjectMapper.

  • الإغلاق (الإغلاق)

هذه نقطة مهمة جدا. قد يحدث أنك تستخدمه كثيرًا حقًا ، لكنك لم تتعمق في جوهر هذه المشكلة. إذا كنت تعرف كيفية كتابتها وكيفية استخدامها - عظيم! ولكن كيف تُظهر لصاحب العمل أنك تعرف ذلك إذا لم تستطع شرحه بعبارات بسيطة. أنصحك بسرقة SwiftBook بدقة حول هذه المشكلة.

  • خيارات

يجب أن يكون هذا أحد أسهل العناصر بالنسبة لك. يجب أن تعرف عن هذا "Schrödinger Cat" وما هي طرق النشر. تأكد من إخبارهم بأنك لست من مؤيدي Force Unwrap ويحتقرون بشدة الأشخاص الذين هم "حماقة" في المشروع.

  • ملحقات

من غير المحتمل أن يبدو هذا قضية منفصلة. على الأرجح سيكون بالتزامن مع قضايا أخرى (على سبيل المثال ، سؤال حول البروتوكولات). اكتب بضع مرات Extension'y. أؤكد لكم أنه لا يوجد شيء معقد هناك. سوف تتعامل بالتأكيد مع هذه القضية.

ولكن على سبيل المثال ، كانت لدي حالات عندما سألوا لماذا توصلت إليها العقول العظيمة.
يمكنك وضع علامة على نفسك في مكان ما مثل هذه الإجابة - "لتوسيع الفصل الذي لا يمكننا الوصول إليه". على سبيل المثال ، eplovskie الأصلي ، الذي لا يمكننا الدخول فيه ، لكننا نريد توسيعه قليلاً لراحتنا.

  • الوراثة

لماذا هم؟ ما هذا؟ عندما تقرأ عن الأدوية العامة في SwiftBook ، قد يبدو لك أن هذا شيء معقد للغاية بالنسبة لعقلك البسيط ، ولكن في الواقع كل شيء أبسط بكثير هناك. الشيء الرئيسي هو ببساطة فهم جوهر ما هو مكتوب من أجله. ويمكنك دائمًا التجسس على كيفية إنشائه. لن تضطر إلى كتابتها في مقابلة. إنهم يريدون فقط سماع فهمك لهذه المشكلة.

  • ARC (بشكل سطحي ، لن يحتاج أحد إلى معرفة متعمقة بدءًا من يونيو)

هنا يريدون أن يسمعوا منك فكرة عامة عن حساب الارتباط. كيف يزيد وماذا سيحدث إذا كان "العداد" صفرًا. لن يطلبوا منك الغوص تحت غطاء المحرك ، وإذا حدث ذلك ، فمن غير المحتمل أن يفهموا أن يونيو يجلس أمامهم.

هنا يريدون أن يفهموا أنه يمكنك العثور على الأخطاء بشكل صحيح في التعليمات البرمجية عندما لا يقوم ViewController ، على سبيل المثال ، "بإلغاء التهيئة" (يُقتل أو يختفي أو يترك) "عن طريق الخطأ".

  • تعدد

كيفية النقل من الخيط الرئيسي إلى الخلفية. هناك العديد من الفروق الدقيقة. لن تفهم كل ذلك مرة واحدة ، الشيء الرئيسي هو التعامل مع GCD و Dispatch Queues. هنا مقال رائع حول هذا الموضوع.

  • ضعيف ، غير مملوك ، خاص ، مهذب

ما هم ضعفاء. ما الفرق بين الضعيف وغير المملوك.

ما هي الخصوصية والملف؟ هذا هو سؤال بسيط. يمكنك القراءة على الإنترنت ، لا يوجد شيء معقد ، ولكن لا تزال بحاجة إلى معرفة ذلك.

قد يشمل أيضا مسألة كسول هنا. كل شيء بسيط هنا. اقرأها!

  • الفرق بين الإطار والحدود

يمكن لهذا السؤال ، من حيث المبدأ ، أن يبدأ مقابلة. لكنني أضيف أن هذا السؤال لم يكن شائعًا بشكل مدهش مثل الآخرين. لكن سرقة على الإنترنت ، لاحظت أن هذا سؤال شائع إلى حد ما ، لذلك لا تجرب حظك ، تعلم! أعتقد أنك متأكد من أن يتم سؤالك. لا يوجد شيء معقد هنا ، تحتاج فقط إلى فهم الجوهر (نعم ، نعم ، كما هو الحال مع جميع القضايا الأخرى).

  • Cocoapods (SwiftPacketManager ، قرطاج)

يجب أن تكون قادرًا بالتأكيد على سحب المكتبات إلى مشروعك. الأكثر شعبية هي CocoaPods. من حيث المبدأ ، سيكون كافيا أن تعرفه. ولكن إذا كنت ترغب في توسيع النطاق ، يمكنك أيضًا رؤية SwiftPacketManager ، قرطاج.

  • شخص سخيف

حسنًا ، أنا هنا لا أعرف حتى ما يمكن إضافته. استخدم البوابة ، واجعلها أكثر (كلما كان ذلك أفضل).

يجب أن تكون قادرًا على إنشاء فروع جديدة ، ودمج (دمج) مع فروع أخرى ، وحل (حل) دمج التعارضات.

من حيث المبدأ ، قمت بإدراج الأسئلة الأكثر شيوعًا التي واجهتها. بالطبع ، لم يقم أحد بإلغاء العامل البشري ويمكنه الإمساك بك في أي سؤال آخر ، ولكن إذا كنت على دراية جيدة بهذه القضايا ، فأنت جاهز بالفعل بنسبة 90 ٪. أنا ما زلت في شهر يونيو وأتفهم أن رأيي بعيد عن الخبير ، لكنني قررت فقط أن أشارك الآخرين ما أعرفه على أمل أن يكون مفيدًا جدًا لشخص ما وسيساعد في التغلب على مرحلة المقابلة الفنية.

تعلم وتطوير ومساعدة الآخرين!

All Articles