搜狗、字節(jié)荆烈,iOS面試算法題 (2020)

現(xiàn)在面試iOS中高級開發(fā)拯勉,算法題已是必然會出現(xiàn)的一個環(huán)節(jié)了,這里把面試遇到的算法題做一個小匯總憔购,希望對大家有用宫峦。大部分公司是需要直接手寫算法題的,這塊兒的能力不容忽略的玫鸟。

  • 1:編程實現(xiàn)字符串拷貝导绷,要考慮下內存重疊問題。 (搜狗)
  • 2:對輸入的字符串屎飘,去除其中的字符‘b’以及連續(xù)出現(xiàn)的‘a’和‘c’ (字節(jié))
  • 3:如何求兩個View的最近公共父類 (字節(jié))

1:編程實現(xiàn)字符串拷貝妥曲,要考慮下內存重疊問題。(搜狗)

解決思路:既然要考慮內存重疊的問題钦购,就是說可能目標地址的起始位置是在源字符串的后半段檐盟,或者目標的結束位置在源字符串的前半段。第一種情況押桃,從末尾開始復制可以解決問題葵萎,同理:第二種情況,從首位開始復制可以解決問題怨规,代碼如下:

char *memcpy_qi(char *dst, const char* src, int cl)
{
    assert(dst != NULL && src != NULL);
    char *ret = dst;
    if (dst >= src && dst <= src+ cl-1) //內存重疊陌宿,從高地址開始復制
    {
        //挪開空間
        dst = dst+ cl-1;
        //將指針挪到結尾
        src = src+ cl-1;
        while (cl—)
            *dst— = *src—;
    }
    else    //正常情況锡足,從低地址開始復制
    {
        while (cl—)
            *dst++ = *src++;
    }
    
    return ret;
}
char * strcpy_qi(char *dst,const char *src)
{
    assert(dst != NULL && src != NULL);
    char *ret = dst;
    memcpy_qi(dst, src, strlen(src)+1);
    return ret;
}

2:對輸入的字符串波丰,去除其中的字符‘b’以及連續(xù)出現(xiàn)的‘a’和‘c’ (字節(jié))

樣例:
‘aacbd’ -> 'ad'
'aabcd' -> 'ad'
'aaabbccc' -> ''
不允許使用類似string.replace函數(shù)
要求時間、空間復雜度盡量優(yōu)化


3:如何求兩個View的最近公共父類 (字節(jié))

解決思路:
首先舶得,這個問題必然不能按照常規(guī)的方式去對一個VIew的所有父類去進行for循環(huán)比較掰烟,那這個題出的就沒有意義。
然后,每個類的所有父類組成了一個繼承鏈纫骑,而在UIKit下蝎亚,所有的UIView的最終父類也必然是NSObject,其實就相當于這兩個類的繼承鏈從NSObject開始向下一直是重合的先馆,直到最后的一個公共父類才開始分開发框,這個最后的公共父類也是最近的公共父類,這是典型的倒Y字型鏈表組合煤墙。那么解題思路就很好做了梅惯,具體代碼如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    Class commonClass = [self commonClass1:[ViewA class] andClass:[ViewB class]];
    NSLog(@"最近公共父類為:%@",commonClass);
}
// 獲取所有父類
- (NSArray *)superClasses:(Class)class {
    if (class == nil) {
        return @[];
    }
    NSMutableArray *result = [NSMutableArray array];
    while (class != nil) {
        [result addObject:class];
        class = [class superclass];
    }
    return [result copy];
}
//對兩條鏈表進行比對
- (Class)commonClass1:(Class)classA andClass:(Class)classB {
    NSArray *arr1 = [self superClasses:classA];
    NSArray *arr2 = [self superClasses:classB];
    NSInteger count = arr1.count < arr2.count ? arr1.count : arr2.count;
    Class resultClass;
    for (NSUInteger i = 0; i < arr1.count; ++i) {
        Class classA = arr1[arr1.count - i - 1];
        Class classB = arr2[arr2.count - i - 1];
        if(classA == classB){
            resultClass = classA;
        }else{
            break;
        }
    }
    return resultClass;
}

更多iOS面試題

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仿野,隨后出現(xiàn)的幾起案子铣减,更是在濱河造成了極大的恐慌,老刑警劉巖脚作,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葫哗,死亡現(xiàn)場離奇詭異,居然都是意外死亡球涛,警方通過查閱死者的電腦和手機劣针,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亿扁,“玉大人酿秸,你說我怎么就攤上這事∥禾蹋” “怎么了辣苏?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長哄褒。 經常有香客問我稀蟋,道長,這世上最難降的妖魔是什么呐赡? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任退客,我火速辦了婚禮,結果婚禮上链嘀,老公的妹妹穿的比我還像新娘萌狂。我一直安慰自己,他們只是感情好怀泊,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布茫藏。 她就那樣靜靜地躺著,像睡著了一般霹琼。 火紅的嫁衣襯著肌膚如雪务傲。 梳的紋絲不亂的頭發(fā)上凉当,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音售葡,去河邊找鬼看杭。 笑死,一個胖子當著我的面吹牛挟伙,可吹牛的內容都是我干的楼雹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼尖阔,長吁一口氣:“原來是場噩夢啊……” “哼烘豹!你這毒婦竟也來了?” 一聲冷哼從身側響起诺祸,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤携悯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后筷笨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憔鬼,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年胃夏,在試婚紗的時候發(fā)現(xiàn)自己被綠了轴或。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡仰禀,死狀恐怖照雁,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情答恶,我是刑警寧澤饺蚊,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站悬嗓,受9級特大地震影響污呼,放射性物質發(fā)生泄漏。R本人自食惡果不足惜包竹,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一燕酷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧周瞎,春花似錦苗缩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至双絮,卻和暖如春浴麻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背囤攀。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工软免, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焚挠。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓膏萧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝌衔。 傳聞我的和親對象是個殘疾皇子榛泛,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354