حتما پیش از شرکت در مسابقه، توضیحات مسابقه را در بلاگ Quera مطالعه کنید.

هم‌چنین برای شرکت در دوره‌های کارآموزی بل‌تات لطفا این فرم را تکمیل کنید.

توجه کنید که نیازی به پاسخ دادن به همه‌ی سوالات نیست؛ زمینه‌های مورد نظرتان را انتخاب کرده و در آن‌ها در مسابقه شرکت کنید.

iOS - هفت سوال تشریحی!


  • محدودیت حجم فایل ارسالی: ۴ مگابایت
  • این سوال داوری خودکار ندارد!
  • پاسخ‌های خود را بصورت Zip ارسال کنید تا پس از پایان مسابقه توسط طراحان نمره‌دهی شود.

به ۷ سوال زیر پاسخ تشریحی دهید (و در صورت لزوم برنامه‌هایی بنویسید و آن‌ها را نیز در فایل Zip ارسالی قرار دهید.)

۱. باگ موجود در کد زیر را مشخص نمایید و پیشنهاد دهید چگونه می توان آن را رفع کرد؟

class MyCustomController: UIViewController {
    var alertLabel: UILabel!

    override func viewDidLoad() {
        alertLabel = UILabel()
        alertLabel.text = "Please wait..."
        view.addSubview(alertLabel)

        alertLabel.snp.makeConstraints { make in
            make.edges.equalToSuperview()
        }

        DispatchQueue.global().async {
            sleep(10)
            self.alertLabel.text = "Waiting over"
        }
    }
}
Plain text

۲. تفاوت استفاده از delegate و notification در چیست؟

۳. در قطعه کد زیر نوع و مقدار result1 و resut2 چیست؟ توضیح دهید چرا.

struct Month {
    let name: String
    let days: Int
}

let monthOfYaer = [
    Month(name: "Farvardin", days: 31),
    Month(name: "Ordibehesht", days: 31),
    Month(name: "Khordad", days: 31),
    Month(name: "Tir", days: 31),
    Month(name: "Mordad", days: 31),
    Month(name: "Shahrivar", days: 31),
    Month(name: "Mehr", days: 30),
    Month(name: "Aban", days: 30),
    Month(name: "Azar", days: 30),
    Month(name: "Dey", days: 30),
    Month(name: "Bahman", days: 30),
    Month(name: "Esfand", days: 29)
]

let result1 = monthOfYaer.map { $0.name }
let result2 = monthOfYaer.reduce(0) { $0 + $1.days }
Plain text

۴. قطعه کد زیر را در نظر بگیرید. باگ موجود چیست و چطور بر مموری تاثیر می گذارد. چطور می توان آن را رفع کرد؟

class Master {
    lazy var detail: Detail = Detail(master: self)

    init() {
        print("Master init")
    }

    deinit {
        print("Master deinit")
    }
}

class Detail {
    var master: Master

    init(master: Master) {
        print("Detail init")
        self.master = master
    }

    deinit {
        print("Detail deinit")
    }
}

func createMaster() {
    var master: Master = Master()
    var detail = master.detail
}

createMaster()
Plain text

۵. توضیح دهید که MVC چیست؟ یک جایگزین برای آن نام ببرید.

۶. در سازنده کلاس UITableViewCell ، reuseIdentifier چه کاربردی دارد؟

init(style: UITableViewCell.CellStyle, reuseIdentifier: String?)
Plain text

۷. ترجیح شما هنگام نوشتن UI چیست؟ فایلهای Xib*، *Storyboards یا ساخت ویو با کد؟

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.