Skip to content

Latest commit

 

History

History
1027 lines (733 loc) · 30.5 KB

swift-quiz.md

File metadata and controls

1027 lines (733 loc) · 30.5 KB

Swift

Q1. What is this code an example of?

let val = (Double)6
  • A syntax issue
  • Typecasting
  • Assignment
  • Initialization

Reference: The Swift Programming Language: Language Guide: The Basics: Constants and Variables

Q2. What is the error in this code?

let x = 5
guard x == 5 { return }
  • The guard is missing the else
  • Nothing is wrong
  • The guard is missing a then
  • The comparison is wrong

Reference: The Swift Programming Language: Language Guide: Control Flow: Early Exit

Q3. What is the raw/underlying type of this enum?

enum Direction {
  case north, south, east, west
}
  • There is none
  • String
  • Any
  • Int

Reference: The Swift Programming Language: Language Guide: Enumerations: Raw Values

Q4. Why is dispatchGroup used in certain situations?

  • It allows multiple synchronous or asynchronous operations to run on different queues.
  • It allows track and control execution of multiple operations together.
  • It allows operations to wait for each other as desired.
  • All of these answers.

Reference: Apple Developer: Documentation: Dispatch: Dispatch Group

Q5. What is this code an example of?

let val = 5
print("value is: \(val)")
  • String interpolation
  • String compilation
  • Method chaining
  • String concatenation

Reference: The Swift Programming Language: Language Guide: Strings and Characters: String Interpolation

Q6. What are the contents of vals after this code is executed?

var vals = [10, 2]
vals.sort { (s1, s2) -> Bool in
  s1 > s2
}
  • [10, 2]
  • [2, 10]
  • nil
  • This code contains an error

Reference: Apple Developer: Documentations: Swift: Array: sort()

Q7. What does this code print?

typealias Thing = [String: Any]
var stuff: Thing
print(type(of: stuff))
  • Dictionary<String, Any>
  • Dictionary
  • Error
  • Thing

Reference: The Swift Programming Language: Language Reference: Types: Type Identifier

Q8. What is the value of y?

let x = ["1", "2"].dropFirst()
let y = x[0]
  • This code contains an error
  • 1
  • 2
  • nil

explanation
dropFirst() from Swift.Collection.Array returns a type of ArraySlice<Element>
as in the documentation pages:
@inlinable public func dropFirst(_ k: Int = 1) -> ArraySlice<Element>

The ArraySlice type makes it fast and efficient for you to perform operations on sections of a larger array. Instead of copying over the elements of a slice to new storage, an ArraySlice instance presents a view onto the storage of a larger array. And because ArraySlice presents the same interface as Array, you can generally perform the same operations on a slice as you could on the original array.

Slices Maintain Indices
Unlike Array and ContiguousArray, the starting index for an ArraySlice instance isn’t always zero. Slices maintain the same indices of the larger array for the same elements, so the starting index of a slice depends on how it was created, letting you perform index-based operations on either a full array or a slice.
The above code returns a slice of value ["2"] but the index did not change. let y = x[1] would give the expected result.
To safely reference the starting and ending indices of a slice, always use the startIndex and endIndex properties instead of specific values.
Reference

Q9. What is the value of test in this code?

var test = 1 == 1
  • true
  • YES
  • 1
  • This code contains an error

Reference: The Swift Programming Language: Language Guide: Basic Operators: Comparison Operators

Q10. What is the value of y?

var x: Int?
let y = x ?? 5
  • 5
  • 0
  • nil
  • This code contains an error

Reference: The Swift Programming Language: Language Guide: Basic Operators: Nil-Coalescing Operators

Q11. What is the type of this function?

func add(a: Int, b: Int) -> Int { return a+b }
  • Int
  • (Int, Int) -> Int
  • Int<Optional>
  • Functions don't have types.

Reference: The Swift Programming Language: Language Guide: Functions: Function Types

Q12. What is the correct way to call this function?

func myFunc(_ a: Int, b: Int) -> Int {
  return a + b
}
  • myFunc(5, b: 6)
  • myFunc(5, 6)
  • myFunc(a: 5, b: 6)
  • myFunc(a, b)

Reference: The Swift Programming Language: Language Guide: Functions: Function Argument Labels and Parameter Names

Q13. The Codable protocol is _?

  • A combination of Encodable and Decodable
  • Not a true protocol
  • Required of all classes
  • Automatically included in all classes

References:

Q14. What is the type of value1 in this code?

let value1 = "\("test".count)"
  • String
  • Int
  • null
  • test.count

Reference: The Swift Programming Language: Language Guide: Strings and Characters: String Interpolation

Q15. When a function takes a closure as a parameter, when do you want to mark is as escaping?

  • When it's executed after the function returns
  • When it's scope is undefined
  • When it's lazy loaded
  • All of these answers

Reference: The Swift Programming Language: Language Guide: Closures: Escaping Closures

Q16. What's wrong with this code?

class Person {
  var name: String
  var address: String
}
  • Person has no initializers.
  • Person has no base class.
  • var name is not formatted correctly.
  • address is a keyword.

Reference: The Swift Programming Language: Language Guide: Initialization: Class Inheritance and Initialization

Q17. What is the value of names after this code is executed?

let names = ["Bear", "Joe", "Clark"]
names.map { (s) -> String in
  return s.uppercased()
}
  • ["BEAR", "JOE", "CLARK"]
  • ["B", "J", "C"]
  • ["Bear", "Joe", "Clark"]
  • This code contains an error.

Q18. What describes this line of code?

let val = 5
  • A constant named val of type Int
  • A variable named val of type item
  • A constant named val of type Number
  • A variable named val of type Int

Reference: The Swift Programming Language: Language Guide: The Basics: Type Safety and Type Inference

Q19. What is the error in this code?

extension String {
  var firstLetter: Character = "c" {
    didSet {
      print("new value")
    }
  }
}
  • Extensions can't add properties.
  • Nothing is wrong with it.
  • didSet takes a parameter.
  • c is not a character.

Reference: The Swift Programming Language: Language Guide: Extensions: Computed Properties

Q20. didSet and willSet are examples of _?

  • Property observers
  • Key properties
  • All of these answers
  • newOld value calls

Reference: The Swift Programming Language: Language Guide: Properties

Q21. What is wrong with this code?

self.callback = {
  self.attempts += 1
  self.downloadFailed()
}
  • Use of self inside the closure causes retain cycle.
  • You cannot assign a value to a closure in this manner.
  • You need to define the type of closure explicitly.
  • There is nothing wrong with this code.

Reference: The Swift Programming Language: Language Guide: Automatic Reference Counting: Strong Reference Cycles for Closures

Q22. How many values does vals have after this code is executed?

var vals = Set<String> = ["4", "5", "6"]
vals.insert("5")
  • Three
  • Four
  • Eight
  • This code contains an error.

Reference: The Swift Programming Language: Language Guide: Collection Types: Sets

Q23. How can you avoid a strong reference cycle in a closure?

  • Use a capture list to set class instances of weak or unowned.
  • You can't, there will always be a danger of strong reference cycles inside a closure.
  • Initialize the closure as read-only.
  • Declare the closure variable as lazy.

Reference: The Swift Programming Language: Language Guide: Automatic Reference Counting

Q24. What is wrong with this code?

if let s = String.init("some string") {
  print(s)
}
  • This String initializer does not return an optional.
  • String does not have an initializer that can take a String.
  • = is not a comparison.
  • Nothing is wrong with this code.

Reference: The Swift Programming Language: Language Guide: The Basics: Optionals

Q25. Which code snippet correctly creates a typealias closure?

  • typealias CustomClosure = () -> ()
  • typealias CustomClosure { () -> () }
  • typealias CustomClosure -> () -> ()
  • typealias CustomClosure -> () {}

Reference: The Swift Programming Language: Language Reference: Declarations: Type Alias Declaration

Q26. How do you reference class members from within a class?

  • self
  • instance
  • class
  • this

Reference: The Swift Programming Language: Language Guide: Methods: Instance Methods

Q27. All value types in Swift are _ under the hood?

  • Structs
  • Classes
  • Optionals
  • Generics

Reference: The Swift Programming Language: Language Guide: Structures and Classes

Q28. What is the correct way to add a value to this array?

var strings = [1, 2, 3]
  • All of these answers
  • strings.append(4)
  • strings.insert(5, at: 1)
  • strings += [5]

Reference: The Swift Programming Language: Language Guide: Collection Types: Arrays

Q29. How many times will this loop be executed?

for i in 0...100 {
  print(i)
}
  • 0
  • 101
  • 99
  • 100

References:

Q30. What can AnyObject represent?

  • An instance of any class
  • An instance of function type
  • All of these answers
  • An instance of an optional type

Reference: The Swift Programming Language: Language Guide: Type Casting: Type Casting for Any and AnyObject

Q31. What is the value of t after this code is executed?

let names = ["Larry", "Sven", "Bear"]
let t = names.enumerated().first().offset
  • This code does not compile. / This code is invalid.
  • 0
  • 1
  • Larry

References:

Q32. What is the value of test after this code executes?

let vt = (name: "ABC", val: 5)
let test = vt.0
  • ABC
  • 0
  • 5
  • name

References:

Q33. What is the base class in this code?

class LSN: MMM {
}
  • MMM
  • LSN
  • There is no base class.
  • This code is invalid.

Reference: The Swift Programming Language: Language Guide: Inheritance: Subclassing

Q34. What does this code print to the console?

var userLocation: String = "Home" {
  willSet(newValue) {
    print("About to set userLocation to \(newValue)...")
  }

  didSet {
    if userLocation != oldValue {
      print("userLocation updated with new value!")
    } else {
      print("userLocation already set to that value...")
    }
  }
}

userLocation = "Work"
  • About to set userLocation to Work... userLocation updated with new value!
  • About to set userLocation to Work... userLocation already set to that value...
  • About to set userLocation to Home... userLocation updated to new value!
  • Error

Reference: The Swift Programming Language: Language Guide: Properties: Property Observers

Q35. What must a convenience initializer call?

  • A base class convenience initializer
  • Either a designated or another convenience initializer
  • A designated initializer
  • None of these answers

Reference: The Swift Programming Language: Language Guide: Initialization: Class Inheritance and Initialization

Q36. Which object allows you access to specify that a block of code runs in a background thread?

  • DispatchQueue.visible
  • DispatchQueue.global
  • errorExample need to be labeled as throws.
  • DispatchQueue.background

Reference: Apple Developer: Documentation: Dispatch: DispatchQueue

Q37. What is the inferred type of x?

let x = ["a", "b", "c"]
  • String[]
  • Array<String>
  • Set<String>
  • Array<Character>

Reference: The Swift Programming Language: Language Guide: Collection Types: Arrays

Q38. What is the value of oThings after this code is executed?

let nThings: [Any] = [1, "2", "three"]
let oThings = nThings.reduce("") { "\($0)\($1)" }
  • 11212three
  • 115
  • 12three
  • Nothing, this code is invalid.

Reference: Apple Developer: Documentation: Swift: Array: reduce(_:_:)

Q39. How would you call a function that throws errors and also returns a value?

  • !try
  • try?
  • try!
  • ?try

Reference: The Swift Programming Language: Language Guide: Error Handling: Handling Errors

Q40. What is wrong with this code?

protocol TUI {
  func add(x1: Int, x2: Int) -> Int {
    return x1 + x2
  }
}
  • Protocol functions cannot have return types.
  • Protocol functions cannot have implementations.
  • Nothing is wrong with it.
  • add is a reserved keyword.

Reference:

Q41. In this code, what are wheels and doors examples of?

class Car {
  var wheels: Int = 4
  let doors = 4
}
  • Class members
  • This code is invalid
  • Class fields
  • Class properties

Reference:

Q42. How do you designated a failable initializer?

  • You cannot
  • deinit
  • init?
  • init

Reference:

Q43. What is printed when this code is executed?

let dbl = Double.init("5a")
print(dbl ?? ".asString()")
  • five
  • 5a
  • .asString()
  • 5

Reference:

Q44. In the function below, what are this and toThat examples of?

func add(this x: Int, toThat y: Int) { }
  • None of these answers
  • Local terms
  • Argument labels
  • Parameters names

Reference: The Swift Programming Language: Language Guide: Functions

Q45. What is wrong with this code?

for (key, value) in [1: "one", 2: "two"] {
  print(key, value)
}
  • The interaction source is invalid
  • The interaction variable is invalid
  • There is nothing wrong with this code
  • The comma in the print is misplaced

Reference: The Swift Programming Language: Language Guide: Control Flow: For-In Loops

Q46. Which of these choices is associated with unit testing?

  • XCTest
  • All of these answers
  • @testable
  • XCTAssert

Reference:

Q47. In the code below, what is width an example of?

class Square {
  var height: Int = 0
  var width: Int {
    return height
  }
}
  • This code contains error
  • A closure
  • A computed property
  • Lazy loading

Reference:

Q48. What data type is this an example of?

let vals = ("val", 1)
  • A dictionary
  • A tuple
  • An optional
  • This code contains error

Reference:

Q49. What is wrong with this code?

var x = 5
x = 10.0
  • You cannot assign a Double to a variable of type Int
  • x is undefined
  • x is a constant
  • x has no type

Reference: The Swift Programming Language: Language Guide: The Basics

Q50. What will this code print to the console?

var items = ["a": 1, "b": 2, "c": "test"] as [String: Any]
items["c"] = nil
print(items["c"] as Any)
  • Any
  • test
  • 1,2,3
  • nil

References:

Q51. What is wrong with this code?

let val = 5.0 + 10
  • There is nothing wrong with this code
  • val is a constant and cannot be changed
  • 5.0 and 10 are different types
  • There is no semicolon

Reference: The Swift Programming Language: Language Guide: The Basics: Type Safety and Type Inference

Q52. How many parameters does the initializer for Test have?

struct Test {
  var score: Int
  var date: Date
}
  • Zero
  • This code contains an error
  • Two
  • Structs do not have initializers

Reference: The Swift Programming Language: Language Guide: Initialization

Q53. What prints to the console when executing this code?

let x = try? String.init("test")
print(x)
  • nil
  • Nothing - this code contains an error
  • Optional("test")
  • test

References:

Q54. How can you sort this array?

var vals = [1, 2, 3]
  • vals.sort { $0 < $1 }
  • vals.sort { (s1, s2) in s1 < s2 }
  • vals.sort(by: <)
  • All of these answers

Reference: Apple Developer: Documentation: Swift: Array: sort()

Q55. DispatchQueue.main.async takes a block that will be

  • Not executed
  • Executed in the main queue
  • None of these answers
  • Executed on the background thread

Reference: Apple Developer: Documentation: Dispatch: DispatchQueue: async(group:qos:flags:execute:)

Q56. When is deinit called?

  • When a class instance needs memory
  • All of these answers
  • When the executable code is finished
  • When a class instance is being removed from memory

Reference: The Swift Programming Language: Language Guide: Deinitialization

Q57. How do you declare an optional String?

  • String?
  • Optional[String]
  • [String]?
  • ?String

Reference: The Swift Programming Language: Language Guide: The Basics: Optionals

Q58. How many times this code will be executed? / How many times will this loop be performed?

for i in ["0", "1"] {
  print(i)
}
  • One
  • Two
  • Three
  • This code does not compile

Reference: The Swift Programming Language: Language Guide: Control Flow: For-In Loops

Q59. What does this code print?

let names = ["Bear", "Tony", "Svante"]
print(names[1] + "Bear")
  • 1Bear
  • BearBear
  • TonyBear
  • Nothing, this code is invalid

References:

Q60. What is true of this code?

let name: String?
  • name can hold only a string value.
  • name can hold either a string or nil value.
  • Optional values cannot be let constants.
  • Only non-empty string variables can be stored in name.

Reference: The Swift Programming Language: Language Guide: The Basics: Optionals

Q61. What is the value of val after this code is executed?

let i = 5
let val = i * 6.0
  • This code is invalid.
  • 6
  • 30
  • 0

Reference: The Swift Programming Language: Language Guide: The Basics: Type Safety and Type Inference

Q62. What does this code print?

enum Positions: Int {
  case first, second, third, other
}

print (Positions.other.rawValue)
  • 3
  • 0
  • other
  • nil

Reference: The Swift Programming Language: Language Guide: The Basics: Raw Values

Q63. What is printed to the console when this code is executed?

"t".forEach { (char) in
  print(char)
}
  • nil
  • Nothing, since the code contains an error
  • t
  • zero

References:

Q64. What prints when this code is executed?

let s1 = ["1", "2", "3"]
  .filter { $0 > "0" }
  .sorted { $0 > $1 }
print(s1)
  • []
  • ["3", "2", "1"]
  • [321]
  • ["1", "2", "3"]

References:

Q65. What enumeration feature allows them to store case-specific data?

  • Associated values
  • Integral values
  • Raw values
  • Custom values

Reference: The Swift Programming Language: Language Guide: Enumerations: Associated Values

Q66. In the code below, AOM must be a(n)?

class AmP: MMM, AOM { }
  • Class
  • Protocol
  • Enumeration
  • Struct

References:

Q67. What is the value of numbers in the code below?

let numbers = [1, 2, 3, 4, 5, 6].filter { $0 % 2 == 0 }
  • [1, 3, 5]
  • []
  • [2, 4, 6]
  • nil

Reference: Apple Developer: Documentation: Swift: Swift Standard Library: Collections: Sequence and Collection Protocols: Sequence: filter()

Q68. What is the type of vals in this code?

let vals = ["a", 1, "Hi"]
  • Array(char)
  • [Any]
  • Array
  • [Generic]

Reference: The Swift Programming Language: Language Guide: Type Casting

Q69. How can you extract val to x in tuple vt

let vt = (name: "ABC", val: 5)
  • let x = vt.1
  • All of these answers
  • let x = vt.val
  • let (_, x) = vt

Reference: The Swift Programming Language: Language Guide: The Basics: Tuples

Q70. What is the type of x?

let x = try? String.init(from: decoder)
  • String
  • String?
  • String!
  • try?

Reference: The Swift Programming Language: Language Guide: Error Handling: Handling Errors

Q71. How many times is this loop executed?

let loopx = 5
repeat {
  print (loopx)
} while loopx < 6
  • Six
  • Zero
  • Five
  • Infinite

Reference: The Swift Programming Language: Language Guide: Control Flow: While Loops

Q72. How many values does vals have after this code is executed?

var vals: Set<String> = ["4", "5", "6"]
vals.insert("5")
  • This code contains an error.
  • Eight
  • Three
  • Four

Reference: The Swift Programming Language: Language Guide: Collection Types: Sets

Q73. What is the base class in this code ?

class LSN: MMM{ }

  • MMM
  • LSN
  • There is no base class.
  • This code is invalid.