面試準(zhǔn)備——基礎(chǔ)知識(shí)

基礎(chǔ)知識(shí)

內(nèi)存中的棧和堆的區(qū)別是什么?那些數(shù)據(jù)在棧上,哪些在堆上?

  • 按管理方式分
    • 對(duì)于棧來講,是由系統(tǒng)編譯器自動(dòng)管理,不需要程序員手動(dòng)管理
    • 對(duì)于堆來講,釋放工作由程序員手動(dòng)管理,不及時(shí)回收容易產(chǎn)生內(nèi)存泄露
  • 按分配方式分
    • 堆是動(dòng)態(tài)分配和回收內(nèi)存的,沒有靜態(tài)分配的堆
    • 棧有兩種分配方式:靜態(tài)分配和動(dòng)態(tài)分配
      • 靜態(tài)分配是系統(tǒng)編譯器完成的,比如局部變量的分配
      • 動(dòng)態(tài)分配是有alloc函數(shù)進(jìn)行分配的,但是棧的動(dòng)態(tài)分配和堆是不同的,它的動(dòng)態(tài)分配也由系統(tǒng)編譯器進(jìn)行釋放,不需要程序員手動(dòng)管理

非OC對(duì)象一般放在里面(內(nèi)存會(huì)被系統(tǒng)自動(dòng)回收)
OC對(duì)象存放于里面(內(nèi)存要程序員手動(dòng)回收)[1]

#define和const定義的變量,有什么區(qū)別?

const定義的不可修改,為常量;
#define是宏定義,是預(yù)編譯指令,在編譯階段替換用到宏的地方。

  • 相同點(diǎn)
    都可定義常量
  • 不同點(diǎn)
    const定義的只分配一次內(nèi)存,#define是替換,替換之后,該怎么分配內(nèi)存還怎么分配;
    #define可以定義函數(shù);[2]
    #define用于單例:[3]
    創(chuàng)建一個(gè)HCSingleton.h文件
// .h文件
#define HCSingletonH(name) + (instancetype)shared##name;

// .m文件
#define HCSingletonM(name) \
static id _instance; \
\
+ (instancetype)allocWithZone:(struct _NSZone *)zone \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        if (!_instance) { \
            _instance = [[self alloc] init]; \
        } \
    }); \
    return _instance; \
} \
\
+ (instancetype)shared##name \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        if (!_instance) { \
            _instance = [[self alloc] init]; \
        } \
    }); \
    return _instance; \
} \
\
- (id)copyWithZone:(NSZone *)zone \
{ \
    return _instance; \
}

實(shí)際定義單例

// .h
#import <Foundation/Foundation.h>
#import "HCSingleton.h"
@interface Test : NSObject
HCSingletonH(Test)
@end
// .m
#import "Test.h"
@implementation Test
HCSingletonM(Test)
@end

使用單例

// .h
#import "Test.h"
NSLog(@"%@", [Test sharedTest]);

TCP和UDP的區(qū)別是什么?

http://blog.csdn.net/li_ning_/article/details/52117463

MD5和Base64的區(qū)別是什么,各自場(chǎng)景是什么?

MD5:只能加密不能解密,用于用戶名密碼的加密,文件校驗(yàn)
Base64:公開的加密和解密,用于URL加密

二叉搜索樹的概念,時(shí)間復(fù)雜度多少?

若左子樹不為空,則左子樹所有節(jié)點(diǎn)均比跟節(jié)點(diǎn)小,若右子樹不為空,則右子樹所有節(jié)點(diǎn)均比根節(jié)點(diǎn)大
時(shí)間復(fù)雜度為樹高O(log(n))


  1. 參考自:http://www.itdecent.cn/p/c8e1d91dda99 ?

  2. 參考自:http://www.cocoachina.com/ios/20160519/16342.html ?

  3. 參考自:http://www.cocoachina.com/ios/20160921/17613.html ?

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

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

  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,818評(píng)論 11 349
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,628評(píng)論 30 472
  • 1.OC的類可以多重繼承嗎?可以實(shí)現(xiàn)多個(gè)接口嗎?要想實(shí)現(xiàn)類似多重繼承如何實(shí)現(xiàn)?答:OC不可以實(shí)現(xiàn)多重繼承。可以實(shí)現(xiàn)...
    歐辰_OSR閱讀 2,159評(píng)論 0 30
  • 1.項(xiàng)目經(jīng)驗(yàn) 2.基礎(chǔ)問題 3.指南認(rèn)識(shí) 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎(chǔ) 2.CocoaTouch...
    扶光啟玄閱讀 5,205評(píng)論 0 13
  • 雅妃香隕,皇上昏迷讓皇宮內(nèi)一片混亂。 而在宮外,轟然的雷聲不絕于耳,一道道閃電劃破夜幕,照亮一方天地。 在這樣天...
    柒柒染閱讀 380評(píng)論 0 1

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