Enjoypro · июль 2024

Тех собес на middle-senior IOS Разработчик в Enjoypro

middle-senior Тех собес 6 вопросов 9 задач
1

Технические вопросы

1. С какими архитектурными подходами и паттернами вы сталкивались?

2. Вы использовали MVVM без ReactiveX на всех проектах?

3. Сталкивались ли вы с SwiftUI? Делали ли на нем какие-то небольшие подпроекты?

4. Какие порождающие и поведенческие паттерны вы чаще всего используете?

5. Был ли у вас опыт настройки CI/CD? Например, доработка pipeline или что-то подобное?

6. Сталкивались ли вы с автотестами? Может быть, писали юнит-тесты или UI-тесты?

2

Задачи

Практика

7. Задача: Что выведет программа и почему?

import UIKit

var names = Set()
names.insert("Boris")
names.insert("Andrey")
names.insert("Boris")
names.insert("Arthur")
names.insert("Boris")
print(names.count)

8. Задача: Что выведет программа и почему?

import UIKit

class Resolution {
    var width = 1920
    var height = 1080
}

var hd = Resolution()
var cinema = hd
cinema.width = 1800
print(hd.width)

9. Задача: Что выведет программа и почему?

import UIKit

let items = [-2, 3, 1, -4, -6, 5]
let result = items.sorted().filter{ $0 > 0 }.map{ String($0) }.reduce(""){ $1 + $0 }
print(result)

10. Задача: Что выведет программа и почему?

import UIKit

func addScore(_ point: Int) -> Int {
    var score = 11
    let calculate = { $0 + score }
    score = calculate(point)
    return calculate(score)
}

print (addScore(10))

11. Задача: Что выведет программа и почему?

import UIKit

class A {
    deinit {
        print("A")
    }
}

class B {
    let a = A()

    deinit {
        print("B")
    }
}

class C: A {
    let b = B()

    deinit {
        print("C")
    }
}

var c: C? = C()
c = nil

12. Задача: Что выведет программа и почему?

import UIKit

class A {
    var bReference: B? = nil

    deinit {
        print("A deinitialized")
    }
}

class B {
    var aReference = A()

    deinit {
        print("B deinitialized")
    }
}

var b: B? = B()
b?.aReference.bReference = b
b = nil

13. Задача: Что выведет программа и почему?

import UIKit

func dispatchPrint() {
    print("1")

    DispatchQueue.main.sync {
        print("2")

        DispatchQueue.main.async {
            print("3")
        }

        print("4")
    }

    print("5")
}

let queue = DispatchQueue(label: "Queue", qos: .userInteractive, attributes: [], autoreleaseFrequency: .never, target: nil)

queue.async {
    dispatchPrint()
}

14. Задача: Что выведет программа и почему?

import UIKit
import Foundation
import PlaygroundSupport

let queue = DispatchQueue.global()

var employees = ["Bill", "Bob", "Joe"]

queue.async {
    let count = employees.count
    for index in 0 ..< count {
        print("(employees[index])")
        Thread.sleep(forTimeInterval: 1)
    }
}

queue.async {
    Thread.sleep(forTimeInterval: 0.5)
    print("remove")
    employees.remove(at: 0)
}

15. Задача: Напишите функцию, которая должна сравнивать две строки на совпадение набора символов.

import UIKit
import Foundation

dog dgo -> true
dog dfo -> false
doog odog -> true
doog dog -> false