Технические вопросы
1. С какими архитектурными подходами и паттернами вы сталкивались?
2. Вы использовали MVVM без ReactiveX на всех проектах?
3. Сталкивались ли вы с SwiftUI? Делали ли на нем какие-то небольшие подпроекты?
4. Какие порождающие и поведенческие паттерны вы чаще всего используете?
5. Был ли у вас опыт настройки CI/CD? Например, доработка pipeline или что-то подобное?
6. Сталкивались ли вы с автотестами? Может быть, писали юнит-тесты или UI-тесты?
Задачи
Практика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 = nil12. Задача: Что выведет программа и почему?
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 = nil13. Задача: Что выведет программа и почему?
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