สมัครตอนนี้

เข้าสู่ระบบ

ลืมรหัสผ่าน

ลืมรหัสผ่านของคุณ? กรุณากรอกอีเมลของคุณ. คุณจะได้รับลิงค์และจะสร้างรหัสผ่านใหม่ทางอีเมล.

เพิ่มโพสต์

คุณต้องเข้าสู่ระบบเพื่อเพิ่มโพสต์ .

เพิ่มคำถาม

คุณต้องเข้าสู่ระบบเพื่อถามคำถาม.

เข้าสู่ระบบ

สมัครตอนนี้

ยินดีต้อนรับสู่ Scholarsark.com! การลงทะเบียนของคุณจะอนุญาตให้คุณเข้าถึงโดยใช้คุณสมบัติเพิ่มเติมของแพลตฟอร์มนี้. สอบถามได้ค่ะ, บริจาคหรือให้คำตอบ, ดูโปรไฟล์ของผู้ใช้รายอื่นและอีกมากมาย. สมัครตอนนี้!

LinkedIn skill assessment answers and questions — Swift

Swift has emerged as a powerful and intuitive programming language for developing iOS, ระบบปฏิบัติการ macOS, and watchOS applications, offering developers a modern and efficient platform for building innovative software. ในคู่มือที่ครอบคลุมนี้, we’re thrilled to present a series of skill assessment questions และ คำตอบ specifically tailored for Swift ผู้ใช้.

Whether you’re a seasoned developer looking to expand your capabilities or a beginner aiming to understand the basics of this powerful language, this resource is designed to help you become proficient in Swift and its applications. Join us as we explore the core concepts of Swift การเขียนโปรแกรม, including optionals, closures, protocols, และอื่น ๆ, empowering you to leverage the full potential of this essential tool for your iOS and macOS projects.

Q1. What is this code an example of?

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

ถ้ามีออกซิเจนเพียงพอ: 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 }
  • NS guard is missing the else
  • Nothing is wrong
  • NS guard is missing a then
  • The comparison is wrong

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: 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.

ถ้ามีออกซิเจนเพียงพอ: Apple Developer: เอกสาร: Dispatch: Dispatch Group

Q5. What is this code an example of?

let val = 5
print("value is: \(val)")
  • String interpolation
  • String compilation
  • Method chaining
  • การต่อสตริง

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: Apple Developer: Documentations: Swift: อาร์เรย์: เรียงลำดับ()

Q7. What does this code print?

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

ถ้ามีออกซิเจนเพียงพอ: 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() จาก 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.
ถ้ามีออกซิเจนเพียงพอ

คำถามที่ 9. What is the value of test in this code?

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

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: Basic Operators: Nil-Coalescing Operators

คำถามที่ 11. 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.

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: ฟังก์ชั่น: 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)

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: ฟังก์ชั่น: Function Argument Labels and Parameter Names

ไตรมาสที่ 13. The Codable protocol is _?

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

อ้างอิง:

คำถามที่ 14. What is the type of value1 in this code?

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

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: 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.

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: Initialization: Class Inheritance and Initialization

ไตรมาสที่ 17. 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

ถ้ามีออกซิเจนเพียงพอ: 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.

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: Extensions: Computed Properties

ไตรมาสที่ 20. didSet and willSet are examples of _?

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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: คุณสมบัติ

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.

ถ้ามีออกซิเจนเพียงพอ: 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")
  • สาม
  • โฟร์
  • Eight
  • This code contains an error.

ถ้ามีออกซิเจนเพียงพอ: 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 หรือ 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.

ถ้ามีออกซิเจนเพียงพอ: 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)
}
  • นี้ 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.

ถ้ามีออกซิเจนเพียงพอ: 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 -> () {}

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: ทำความเข้าใจการรับสินค้าคงคลัง: Instance Methods

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

  • Structs
  • Classes
  • Optionals
  • Generics

ถ้ามีออกซิเจนเพียงพอ: 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]

ถ้ามีออกซิเจนเพียงพอ: 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

อ้างอิง:

ไตรมาสที่ 30. What can AnyObject represent?

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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: Type Casting: Type Casting for Any and AnyObject

ไตรมาสที่ 31. 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

อ้างอิง:

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

อ้างอิง:

Q33. What is the base class in this code?

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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: มรดก: Subclassing

คำถามที่ 34. 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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: คุณสมบัติ: 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

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: Apple Developer: เอกสาร: Dispatch: DispatchQueue

Q37. What is the inferred type of x?

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

ถ้ามีออกซิเจนเพียงพอ: 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)" }
  • 11212สาม
  • 115
  • 12สาม
  • ไม่มีอะไร, this code is invalid.

ถ้ามีออกซิเจนเพียงพอ: Apple Developer: เอกสาร: Swift: อาร์เรย์: reduce(_:_:)

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

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

ถ้ามีออกซิเจนเพียงพอ: 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.

ถ้ามีออกซิเจนเพียงพอ:

Q41. In this code, what are wheels และ doors examples of?

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

ถ้ามีออกซิเจนเพียงพอ:

Q42. How do you designated a failable initializer?

  • You cannot
  • deinit
  • init?
  • init

ถ้ามีออกซิเจนเพียงพอ:

Q43. What is printed when this code is executed?

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

ถ้ามีออกซิเจนเพียงพอ:

Q44. In the function below, what are this และ toThat examples of?

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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: ฟังก์ชั่น

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

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ:

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

ถ้ามีออกซิเจนเพียงพอ:

Q48. What data type is this an example of?

let vals = ("val", 1)
  • พจนานุกรม
  • A tuple
  • An optional
  • This code contains error

ถ้ามีออกซิเจนเพียงพอ:

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

ถ้ามีออกซิเจนเพียงพอ: 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
  • ทดสอบ
  • 1,2,3
  • nil

อ้างอิง:

คำถามที่ 51. 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 และ 10 are different types
  • There is no semicolon

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: The Basics: Type Safety and Type Inference

คำถามที่ 52. How many parameters does the initializer for Test have?

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

ถ้ามีออกซิเจนเพียงพอ: 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
  • ไม่มีอะไร – this code contains an error
  • ไม่จำเป็น(“ทดสอบ”)
  • ทดสอบ

อ้างอิง:

คำถามที่ 54. 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

ถ้ามีออกซิเจนเพียงพอ: Apple Developer: เอกสาร: Swift: อาร์เรย์: เรียงลำดับ()

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

ถ้ามีออกซิเจนเพียงพอ: Apple Developer: เอกสาร: Dispatch: DispatchQueue: async(กลุ่ม:qos:flags:ดำเนินการ:)

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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: Deinitialization

Q57. How do you declare an optional String?

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

ถ้ามีออกซิเจนเพียงพอ: 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)
}
  • หนึ่ง
  • สอง
  • สาม
  • This code does not compile

ถ้ามีออกซิเจนเพียงพอ: 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
  • ไม่มีอะไร, this code is invalid

อ้างอิง:

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 ค่าคงที่.
  • Only non-empty string variables can be stored in name.

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: 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
  • อื่น
  • nil

ถ้ามีออกซิเจนเพียงพอ: 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
  • ไม่มีอะไร, since the code contains an error
  • ทำไม Tundra Biome จึงเป็น Biome ที่หนาวที่สุดในโลก
  • zero

อ้างอิง:

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”]

อ้างอิง:

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

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

ถ้ามีออกซิเจนเพียงพอ: The Swift Programming Language: Language Guide: Enumerations: Associated Values

Q66. In the code below, AOM must be a(ทำไม Tundra Biome จึงเป็น Biome ที่หนาวที่สุดในโลก)?

class AmP: MMM, AOM { }
  • ระดับ
  • มาตรการ
  • Enumeration
  • Struct

อ้างอิง:

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

ถ้ามีออกซิเจนเพียงพอ: Apple Developer: เอกสาร: Swift: Swift Standard Library: Collections: Sequence and Collection Protocols: ลำดับ: กรอง()

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

let vals = ["a", 1, "Hi"]
  • อาร์เรย์(char)
  • [Any]
  • อาร์เรย์
  • [Generic]

ถ้ามีออกซิเจนเพียงพอ: 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
  • อนุญาต (_, NS) = vt

ถ้ามีออกซิเจนเพียงพอ: 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?

ถ้ามีออกซิเจนเพียงพอ: 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

ถ้ามีออกซิเจนเพียงพอ: 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
  • สาม
  • โฟร์

ถ้ามีออกซิเจนเพียงพอ: 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.

เกี่ยวกับ เฮเลน บาสซีย์

โปรดแจ้งให้เราทราบเพื่อที่ฉันจะได้รวมไว้ในชั้นเรียนนี้หรือในหลักสูตรในอนาคต, I'm Helena, นักเขียนบล็อกผู้หลงใหลในการโพสต์เนื้อหาเชิงลึกในช่องการศึกษา. ฉันเชื่อว่าการศึกษาเป็นกุญแจสำคัญในการพัฒนาตนเองและสังคม, และฉันต้องการแบ่งปันความรู้และประสบการณ์ของฉันกับผู้เรียนทุกวัยและทุกภูมิหลัง. ในบล็อกของฉัน, คุณจะพบบทความในหัวข้อต่างๆ เช่น กลยุทธ์การเรียนรู้, การศึกษาออนไลน์, คำแนะนำด้านอาชีพ, และอื่น ๆ. ฉันยินดีรับข้อเสนอแนะและข้อเสนอแนะจากผู้อ่านของฉัน, ดังนั้นอย่าลังเลที่จะแสดงความคิดเห็นหรือติดต่อฉันได้ตลอดเวลา. ฉันหวังว่าคุณจะสนุกกับการอ่านบล็อกของฉันและพบว่ามีประโยชน์และสร้างแรงบันดาลใจ.

ทิ้งคำตอบไว้