zoukankan      html  css  js  c++  java
  • Swift面试题相关

    面试题

    ①给一个数组,要求用swift写一个函数,交换数组中的两个元素。

        //给一个数组,要求用swift写一个函数,交换数组中的两个元素。
        var nums = [1,2,3,4,5,6,7]
        //        func swap(_ nums: inout [Int], _ a : Int, _ b : Int) {
        //            let temp = nums[a]
        //            nums[a] = nums[b]
        //            nums[b] = temp
        //        }
        
        //2.泛型
        //        func swap<T>(_ nums: inout [T], _ a : Int, _ b : Int) {
        //            let temp = nums[a]
        //            nums[a] = nums[b]
        //            nums[b] = temp
        //        }
        //
        func swap<T>(_ nums: inout [T], _ a : Int, _ b : Int) {
            let count = nums.count
            //安全判断
            if a == b || a < 0 || a > count - 1 || b < 0 || b > count - 1   {
                return
            }
            (nums[a],nums[b]) = (nums[b],nums[a])
        }

    ②循环引用

    //循环引用(属性前+weak修饰)
    class Node {
        var value = 0
        weak var prev : Node?
        weak var next : Node?
        init(_ value : Int) {
            self.value = value
        }
        deinit {
            print("deinit")
        }
    }
    
    let a = Node(0)
     let b = Node(1)
            
    a.prev = b
    b.next = a

    使用 swift实现一个函数,输入是任一整数,输出要返回输入的整数+2

    简单:
    func addTwo(input : Int) -> Int {
            return input + 2
        }
    //什么是柯里化? //柯里化指的是从一个多参数函数变成一连串单参数函数的变换
        func add (input : Int) -> (Int) -> Int {
            return { value in
                return input + value
            }
        }
    let addTwo = add(input: 2)
    let oupPut = addTwo(8)
    print(oupPut)
    
    class BankCard {
            //余额
            var balance : Double = 0.0
            //存钱方法
            func deposit(amount: Double) {
                balance += amount
                print("deposit:(balance)")
            }
            
        }
    
    //柯里化?
    let card = BankCard()
    card.deposit(amount: 100)
            
    let deposit = BankCard.deposit
    deposit(card)(100)

    ④ 简化代码

     

  • 相关阅读:
    Chap-6 6.1~6.3 程序装载
    X Window基础二(转)
    X Window基础一(转)
    Linux基础命令 su与sudo的区别
    Chap-4 Section 4.6 链接控制过程
    Chap-4 Section 4.5 静态库链接
    ceph的CRUSH数据分布算法介绍
    使用ffmpeg捕获USB外部摄像头视频流
    使用ffserver实现转发实时流媒体(摄像头捕获)
    内存映射文件(专门读写大文件)
  • 原文地址:https://www.cnblogs.com/StevenHuSir/p/Swift_Interview.html
Copyright © 2011-2022 走看看