面试整理

网络工程总结

传输层使用TCP/IP协议,应用层使用HTTP,HTTPS协议。
网络协议

iOS基础总结

iOS底层总结

《iOS知识点梳理-Runloop》
《iOS知识点梳理-Runtime》

算法编程面试题

1. 判断一个单向链表是否有环?

  • 快慢双指针法,快指针一次走两步,慢指针一次走一步,如果有环必会相遇
 public class ListNode {
     public var val: Int
     public var next: ListNode?
     public init(_ val: Int) {
         self.val = val
         self.next = nil
     }
 }

func validedCycleNoded(_ node: ListNode?) -> Bool {
    if node == nil {
        return false
    }
    
    var fast = node, slow = node
    
    while fast != nil {
        fast = fast?.next?.next
        slow = slow?.next
        
        if fast?.val == slow?.val {
            return true
        }
    }
    
    return false
}
  • 可以使用集合(Set)来判断,来一次遍历,把所有node添加到集合中,如果有重复,则肯定要有环

2.如何计算二叉树的高度?

递归算法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public var val: Int
 *     public var left: TreeNode?
 *     public var right: TreeNode?
 *     public init(_ val: Int) {
 *         self.val = val
 *         self.left = nil
 *         self.right = nil
 *     }
 * }
 */
class Solution {
    func maxDepth(_ root: TreeNode?) -> Int {
        guard let root = root else {return 0;}  
        return max(maxDepth(root.left), maxDepth(root.right)) + 1
    }
}

3. 合并两个有序数组,同时去重

func mergeSortedArray(_ a: [Int], b:[Int]) ->[Int] {

    var i = 0
    var j = 0
    var ans = [Int]()

    //合并数组
    while i < a.count && j < b.count {
        if a[i] > b[j] {
            ans.append(b[j])
            j += 1
        }else if (a[i] == b[j]) {
            ans.append(b[j])
            j += 1
            i += 1
        }else {
            ans.append(a[i])
            i += 1
        }
    }

     //数组a有未合并元素
    while i < a.count {
        ans.append(a[i])
        i += 1
    }

    //数组b有未合并元素
    while j < b.count {
        ans.append(b[j])
        j += 1
    }

    return ans
}
复制代码

4. 字符串编辑最短距离(LeeCode)

LeeCode-72.编辑距离
解法:动态规划

5. 判断括号的有效性(LeeCode)

LeeCode-20.有效的括号

class Solution {
    func isValid(_ s: String) -> Bool {
     if s.isEmpty {
        return true;
    }

    let map = ["}":"{", ")":"(","]":"["]
    var stack = [String]()

    for c in s {
       let key = String(c)
        if key == "{" || key == "(" ||  key == "[" {
            stack.append(key)
        } else if !stack.isEmpty && map[key] == stack.last {
            stack.removeLast()
        } else {
            return false
        }
    }

    return stack.isEmpty
    }

}
复制代码

6. 25匹马,现有5条跑道,没有计时器,要找出最快3匹马,至少要跑几场?

至少跑7场,

  1. 对25匹马随机分成5个组(A,B,C,D,E,F),每组跑一场,记录每一匹马在当前组中名次(第1名,第2名,第3名)(跑了五场)
  2. 从各个组中选取名次为第一名的马组成一组,跑一场,记录名次(第六场),本组第1名则确定了25匹马中最快的一匹马
  3. 选取第六场中名次为第1名的所在原来组名次为第2、3名马,选取第六场中名次为第2名的所在原来组名次第1、2名马(它自己+第2名),选取第六场中名次为第3名所在原来组名次第1名的马(它自己),组成一组,跑一场,记录名次(第七场),本场的第1、2名就是25匹马中最快的第2、3名

7. 8瓶液体,其中1瓶有毒药,毒药1小时后至死,请问最快找出毒药,需要几只老鼠?

1只老鼠可以断定2瓶液体,2^3=8,所以需要3只老鼠即可,
对液体进行编号,001,010,011,100,101,110,111
给1号老鼠喂编码个位数上是1的液体(001,011,101,111),
给2号老鼠喂编码十位数上是1的液体(010,011,110,111),
给3号老鼠喂编码百位数上是1的液体(100,101,110,111),
1小时后,
如果老鼠全活, 8号液体有毒,
如果全都死,7号液体有毒,
如果1号死,2,3活, 1号液体有毒
如果2号死, 1,3活,2号液体有毒
如果3号死,1,2活, 4号液体有毒
如果1,2号死,3活, 3号液体有毒
如果1,3号死,2活, 5号液体有毒
如果2,3号死,1活, 6号液体有毒

其他

如下结构体,大小是多少?

struct Node {
char a;
int b;
} node;
复制代码
结构体大小是8,考察结构体特性,内存对齐原则。

定义一个全局变量a = 0; 开辟两条子线程访问 a = a + 1; 各for loop 10次,a的最终结果是多少?

<=20,线程安全问题。

公司员工表(user)中有入职时间(t1)和离职时间(t2),请编写sql语句,查询18年3月(date1)-18年6月(date2)所有在职员工人信息

select * from user where 入职时间<201806 and (离职时间 is null or离职时间>201803)。

参考
《2020年疫情之下iOS面试题总结篇》
《tcp协议详解》
《文章3》
《文章4》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281

推荐阅读更多精彩内容