2018-03-01面試分享

由于各種原因打算從現(xiàn)公司離職,于是就有了今天的面試分享,可能最近一段時間都會更新這個話題相關(guān)的文章。有興趣的可以follow一下。
今天一共面試了兩家,上午一家下午一家,上午十點我就到了第一家公司,填寫了個人信息,個子高的離譜的人事妹紙就遞過來一份面試題,我一看每個題都那么眼熟,而且都可以說個大概,但是寫到紙上的文字就是組織不好,這也許是我們碼農(nóng)的通病吧!下面我分享下對于我來說比較困難的題(其實大部分題網(wǎng)上都有,大家面試之前多看下《招聘一個靠譜的iOS》不知道為啥,好多公司現(xiàn)在全都從這上面上找題,甚至直接就是復制粘貼過來的)。

  • 1.最長公共子字符串查找(OC實現(xiàn))
    使用類別擴展NSString實現(xiàn)。
//實現(xiàn)查找兩個字符串中最大相同的子串,例如:”likeyou”和”lookyou”,最大相同的子串是”you”。
#import <Foundation/Foundation.h>
#import "NSString+Find.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        char *s1=malloc(30*sizeof(char)),*s2=malloc(30*sizeof(char));
        NSLog(@"輸入字符串1(長度小于30):");
        gets(s1);
        NSLog(@"輸入字符串2(長度小于30):");
        gets(s2);
        NSString *str1=[NSString stringWithUTF8String:s1];
        NSString *str2=[NSString stringWithUTF8String:s2];
        NSLog(@"你輸入的兩個字符串為:%@,%@",str1,str2);
        NSString *subStr=[str1 findMaxSubstring:str1 andString2:str2];
        if (subStr) {
            NSLog(@"最長公共子串是:%@",subStr);
        }
    }
    return 0;
}
  • NSString+Find.h
#import <Foundation/Foundation.h>

@interface NSString (Find)
//找到兩個字符串的最大公共子字符串
-(NSString*)findMaxSubstring:(NSString *)string1 andString2:(NSString*)string2;
@end
  • NSString+Find.m
#import "NSString+Find.h"

@implementation NSString (Find)
-(NSString *)findMaxSubstring:(NSString *)string1 andString2:(NSString *)string2{
//    首先找到長度較小的字符串 保證string1<string2
    NSString *temp;
    if ([string1 length]>[string2 length]) {
        temp=string1;
        string1=string2;
        string2=temp;
    }
    long length1=[string1 length];
//    然后從長到短獲取string1的子字符串,去string2中找,如果包含,則返回該子字符串,否則再找
    NSRange range=NSMakeRange(0, length1);
    while (![string2 containsString:[string1 substringWithRange:range]]&&range.location<=length1-1&&range.length>=1) {//如果string2不包含目前的子串并且沒有越界

//        判斷下一步操作
        if (range.location<length1-range.length) {//不需要減length
            range.location++;
        }else{
            range.length--;
            range.location=0;
        }
    }
//    最后判斷并返回子串
    if (range.length==0) {
        NSLog(@"沒有找到公共子字符串!");
        return nil;
    }else{
        NSLog(@"找到了");
        return [string1 substringWithRange:range];
    }
    }
@end

其實這是一道算法題,不使用類別也可以實現(xiàn)。
下面是我寫的Demo

  • 2.如何用GCD同步若干個異步任務?(如根據(jù)多個Url異步加載多張圖片,然后在都下載完成后合成一張整圖)
//使用Dispatch Group追加block到Global Group Queue,這些block如果全部執(zhí)行完畢,
//就會執(zhí)行Main Dispatch Queue中的結(jié)束處理的block
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, queue, ^{ /*加載圖片1 */ });
dispatch_group_async(group, queue, ^{ /*加載圖片2 */ });
dispatch_group_async(group, queue, ^{ /*加載圖片3 */ });
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    // 合并圖片
});
答題的時候只要打出group概念和完成結(jié)束后的notify就加分。
//面試的第二場也問了GCD相關(guān)的問題,看來有必要剛一波GCD了!

面試感想:現(xiàn)在的大公司基本上都是看學歷和經(jīng)歷,這個是門檻,沒有高一點的學歷,基本還是那個不看你的簡歷的,而且即使你學歷達標,也是要求你是大廠出來的,也就是阿里P8P10級別的。說實話,有點小受打擊!
未完待續(xù)。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,316評論 25 708
  • 1.內(nèi)存管理 2.單例的理解 3.post和get的區(qū)別 4.md5和base64是什么,有什么區(qū)別 5.簡單談談...
    coder_Wg閱讀 1,356評論 1 6
  • 煙囪里升起昨日的余燼 在群山的肩頭 理想是最后的榮光 而榮光即黯 為繼的是夜 是悄悄掩至的大夢 更多一片月光白 月...
    狂生小乙閱讀 372評論 0 0

友情鏈接更多精彩內(nèi)容