ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

10 лучших вопросов и ответов для собеседования по Swift в 2024 году

10 лучших вопросов и ответов для собеседования по Swift в 2024 году

Apple представила язык программирования Swift в 2014 году как современный, безопасный и быстрый язык, предназначенный для простого изучения и использования. Он сочетает в себе элементы из различных языков программирования, таких как Objective-C, C, Python и других, при этом представляя новые функции.

Хотя он в основном используется для разработки на iOS и macOS, он также набирает популярность для кроссплатформенной разработки.

 

10 лучших вопросов для интервью Swift

Существует высокий спрос на квалифицированных разработчиков Swift, поэтому изучение it откроет возможности для карьерного роста в сфере разработки приложений для iOS, одном из самых быстрорастущих секторов технологической индустрии. В этом блоге будут обсуждаться 10 наиболее часто задаваемых вопросов для интервью Swift.

 

Вопрос 1. В чем разница между let и var?

В Swift ключевые слова let и var используются для объявления констант и переменных соответственно.

 

Ключевое слово let

Мы объявляем константу с помощью let ключевого слова. Поскольку константу нельзя изменить после инициализации, мы должны присвоить ей значение при ее объявлении.

Пример использования ключевого слова let:

let standard = 100.1
let name: String = "AndreyEx"
print("Printing float value ",standard)
print("Printing string value ",name)
//standard = 200.2
//print("Printing float value after change",standard)

 

Объяснение кода:

 

Примечание: Попробуйте раскомментировать код в строках 6-7 и выполните код. Мы получим ошибку компиляции, заключающуюся в том, что мы не можем присвоить значение константе.

 

Ключевое слово var

Мы объявляем переменную с помощью var ключевого слова. Значение, присвоенное переменной, может быть изменено в любое время. Переменная может быть объявлена без начального значения и присвоена позже.

Пример использования ключевого слова var:

var standard = 100.1
var name: String = "AndreyEx"
print("Printing float value ",standard)
print("Printing string value ",name)
standard = 200.2
name = "Educative"
print("Printing float value after change",standard)
print("Printing string value after change",name)

 

Объяснение кода:

 

Вопрос 2. Что такое вывод типа в Swift?

Вывод типа – это функция, которая позволяет компилятору автоматически определять тип данных переменной или константы на основе присвоенного ей начального значения. Это делает код более чистым и лаконичным без ущерба для безопасности типов. Это особенно полезно при работе со сложными типами данных, такими как массивы или словари, где явное указание типов может быть громоздким.

Пример использования вывода типов:

let number1 =100
let number2 =200.356
var message ="Educative"
print(type(of: number1))
print(type(of: number2))
print(type(of: message))

 

Объяснение кода:

 

Когда мы выполняем код, мы видим типы данных, напечатанные как Int, Double и String.

 

Вопрос 3. Что такое кортеж в Swift?

Кортеж – это облегченная структура данных, которая может группировать несколько значений в одно составное значение. Она может содержать любую комбинацию значений разных типов. Они обычно используются в Swift для функций, которым необходимо возвращать несколько значений, или при работе с API, которые возвращают несколько значений. Они предоставляют удобный способ группировать связанные значения без определения пользовательской структуры данных, такой как класс или struct.

Пример использования кортежа:

let sampleTuple = (1000, "Educative", true)
let val1 = sampleTuple.0
let val2 = sampleTuple.1
let val3 = sampleTuple.2  
print("Printing values using index of elements of the tuple.")
print(val1);
print(val2);
print(val3);
let namedTuple = (age: 22, name: "AndreyEx")
let age = namedTuple.age    
let name = namedTuple.name    
print("Printing values using named elements of tuple.")
print(age);
print(name);

 

Объяснение кода:

 

Вопрос 4. В чем разница между операторами == и === в Swift?

В Swift есть два оператора сравнения: == и ===.

Оператор ==

Оператор == проверяет, равны ли два значения по содержанию. Он выполняет проверку значений сравниваемых переменных или констант. Обычно используется для сравнения встроенных типов, таких как Int, String, Double и т.д. Однако его также можно использовать для сравнения экземпляров пользовательских типов, если они соответствуют Равному протоколу.

Пример использования оператора ==:

let a = 5
let b = 5
if a == b {
    print("They are equal")
}

struct Student: Equatable{
    var age: Int
    var name: String
}

let student1 = Student(age:22, name:"AndreyEx")
let student2 = Student(age:22, name:"AndreyEx")
let student3 = Student(age:25, name:"AndreyEx")
if student1 == student2 {
    print("student1 and student2 are equal")
}

if student2 == student3 {
    print("student2 and student3 are equal")
}

 

Объяснение кода:

 

Оператор ===

Оператор === проверяет, относятся ли две переменные или константы к одному и тому же экземпляру памяти. Его также называют оператором идентификации. В основном используется для классов и функций, чтобы проверить, указывают ли две ссылки на один и тот же экземпляр.

Пример использования оператора === :

class Student {
}
let student1 = Student()
let student2 = student1
if student1 === student2 {
    print("They are the same objects.")
}

 

Объяснение кода:

 

Вопрос 5. Что такое for-in цикл в Swift?

for-in Цикл используется для перебора последовательности или коллекций, таких как массивы, наборы, словари и т.д. Мы можем выполнить набор инструкций для каждого элемента в последовательности. Его также можно использовать для доступа к индексу и значению каждого элемента в массиве с помощью enumerated() метода.

Пример использования цикла for-in :

let countries = ["USA", "Canada", "England"]
for country in countries {
    print(country)
}
for (index, letter) in "Educative".enumerated() {
    print("Index \(index) has letter \(letter) ")
}

 

Объяснение кода:

 

Вопрос 6. Что такое закрытие в Swift?

Мы можем определить замыкания как автономные функциональные блоки, которые можно передавать по кругу и использовать в коде. Они очень похожи на лямбды в других языках программирования. Мы можем фиксировать и сохранять ссылки на константы и переменные из контекста, в котором определяются замыкания.

Пример использования замыканий:

////////////Пример 1////////////////////////////
let multiply = { (val1: Int, val2: Int) -> Int in
    return val1 * val2
}
print(multiply(5, 100))

////////////Пример 2////////////////////////////
func transform(_ numbers: [Int], with logic: (Int) -> Int) -> [Int] {
    var result = [Int]()
    for number in numbers {
        let transformedValue = logic(number)
        result.append(transformedValue)
    }
    return result
}
let numbers = [11, 21, 31, 41]
let modifiedNumbers = transform(numbers) { $0 * 2 }
print(modifiedNumbers)

 

Объяснение кода:

 

Вопрос 7. Какие протоколы существуют в Swift?

Протокол – это соглашение о методах, свойствах и других требованиях, которые соответствуют определенной функциональности. Классы, структуры и перечисления могут соответствовать протоколу, обеспечивающему реальную реализацию этих требований. Мы можем рассматривать их как интерфейсы в других языках программирования. Использование протоколов повышает гибкость кода и возможность повторного использования.

Пример использования протокола:

protocol Info {
    var name: String { get set }
    var age: Int { get set }
    func printBio()
}

class Student: Info {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

 
    func printBio() {
        print("Student's name is \(name) and he is \(age) years old.")
    }
}

let student = Student(name: "AndreyEx", age: 20)
student.printBio()

 

Объяснение кода:

 

Вопрос 8. Какова цель знака ?? в Swift?

Двойной вопросительный знак ?? в Swift называется оператором объединения нулевых значений. Он обеспечивает точный способ задать значение по умолчанию для необязательного параметра if nil. Предположим, у нас есть выражение x ?? y. Затем выражение принимает значение, равное x если x не равно нулю, и выражение принимает значение, равное y если x равно нулю.

Пример использования оператора ??:

let x: Int? = nil
let y = 100
let result = x ?? y
print(result)

 

Вопрос 9. Что такое дженерики в Swift?

Дженерики позволяют нам писать гибкие и повторно используемые функции, структуры, классы и перечисления, которые могут работать с любым типом. Мы можем написать код, который позволит избежать дублирования, абстрагируясь от типов и логики конкретных реализаций, таких как шаблоны в других языках программирования.

Примеры использования дженериков в Swift:

func swapValues<T>(_ a: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}

var x = 5
var y = 10

print("Before swap x = \(x) and y = \(y)")
swapValues(&x, &y)
print("After swap x = \(x) and y = \(y)")
var greeting = "Hello"
var company = "Educative"

print("Before swapping greeting = \(greeting) and company = \(company)")
swapValues(&greeting, &company)
print("After swapping greeting = \(greeting) and company = \(company)")

 

Объяснение кода:

 

Вопрос 10. Что такое заявление guard в Swift?

Заявление guard улучшает читаемость и ремонтопригодность, позволяя досрочно завершить работу, если условие не выполнено. Досрочный выход может быть из функционального или кодового блока. Обычно используется для обработки предварительных условий в начале функции, избегая вложенных if инструкций и улучшая ясность кода. Его синтаксис guard condition else {}. Если условие инструкции guard принимает значение true, то выполнение кода продолжается в обычном режиме. Однако, если оно принимает значение false, выполняется код после ключевого слова else. Следует отметить, что else блок должен содержать код, который выводит управление программой за пределы области, такой как return, throw, break или continue.

Пример использования заявления guard:

func test(_ name: String?) {
    guard let name = name else {
        print("guard condition is not true. Entered the else code.")
        return
    }
    print("guard condition was true.")
}
test("AndreyEx")
test(nil)

 

Объяснение кода:

 

На этом мы завершаем наш блог о 10 лучших вопросах для интервью Swift. Мы начали с постановки вопроса и подробного объяснения ответа. Затем мы привели пример на основе кода для лучшего понимания. Следует отметить, что многие другие концепции Swift будут рассмотрены в следующей серии этого блога.

Exit mobile version