馬上金九銀十脐嫂,相信最近很多人都在跳槽哨颂,我這里就根據知識點分門別類的整理了一下(朋友面試,網上收集等等)它改,想看哪一塊可以快速找到己沛,希望可以幫助大家慌核,祝大家求職順利。
一般面試題
1.堆和棧的區(qū)別
1.內存管理范圍 只有oc對象需要進行內存管理 非oc對象類型比如基本數據類型不需要進行內存管理 2.內存管理本質 因為:Objective-C的對象在內存中是以堆的方式分配空間的,并且堆內存是由你釋放的申尼,就是release OC對象存放于堆里面(堆內存要程序員手動回收) 非OC對象一般放在棧里面(棧內存會被系統(tǒng)自動回收) 堆里面的內存是動態(tài)分配的垮卓,所以也就需要程序員手動的去添加內存、回收內存 3.內存分配以及管理方式 按分配方式分 堆是動態(tài)分配和回收內存的粟按,沒有靜態(tài)分配的堆 棧有兩種分配方式:靜態(tài)分配和動態(tài)分配 靜態(tài)分配是系統(tǒng)編譯器完成的灭将,比如局部變量的分配 動態(tài)分配是有alloc函數進行分配的愚臀,但是棧的動態(tài)分配和堆是不同的,它的動態(tài)分配也由系統(tǒng)編譯器進行釋放男旗,不需要程序員手動管理 按管理方式分 對于棧來講察皇,是由系統(tǒng)編譯器自動管理什荣,不需要程序員手動管理 對于堆來講稻爬,釋放工作由程序員手動管理桅锄,不及時回收容易產生內存泄露 堆:是大家共有的空間样眠,分全局堆和局部堆檐束。全局堆就是所有沒有分配的空間被丧,局部堆就是用戶分配的空間甥桂。堆在操作系統(tǒng)對進程 初始化的時候分配格嘁,運行過程中也可以向系統(tǒng)要額外的堆探入,但是記得用完了要還給操作系統(tǒng)蜂嗽,要不然就是內存泄漏辱揭。堆里面一般 放的是靜態(tài)數據问窃,比如static的數據和字符串常量等完沪,資源加載后一般也放在堆里面域庇。一個進程的所有線程共有這些堆 覆积,所以對堆的操作要考慮同步和互斥的問題。程序里面編譯后的數據段都是堆的一部分尉姨。 棧:是個線程獨有的,保存其運行狀態(tài)和局部自動變量的吗冤。棧在線程開始的時候初始化啊送,每個線程的椥拦拢互相獨立降传,因此 ,棧是 thread safe的段只。每個c++對象的數據成員也存在在棧中赞枕,每個函數都有自己的棧坪创,棧被用來在函數之間傳遞參數。操作系統(tǒng)在切換線程的時候會自動的切換棧姐赡,就是切換ss/esp寄存器莱预。棧空間不需要在高級語言里面顯式的分配 和釋放项滑。 一句話總結就是 堆:由程序員分配和釋放,如果不釋放可能會引起內存泄漏 棧:由編譯器自動分配和釋放依沮,一般存放參數值,局部變量
2.KVO和KVC
KVC枪狂,即是指 NSKeyValueCoding(鍵值編碼),提供一種機制來間接訪問對象的屬性危喉。KVC 就是基于KVO技術來實現的。 KVO州疾,提供了一種觀察者的機制辜限,通過對某個對象的某個屬性添加觀察者,當該屬性改變孝治,就會調用"observeValueForKeyPath:"方法。
- OC中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼审磁, 方法是什么?如果想延時執(zhí)行代碼谈飒、方法是什么?
1、線程創(chuàng)建有三種方法:使用NSThread創(chuàng)建态蒂、使用GCD的dispatch杭措、使用子類化的NSOperation,然后將其加入NSOperationQueue; 2、在主線程執(zhí)行代碼钾恢,方法是performSelectorOnMainThread:withObject:waitUntilDone:; 3手素、如果想延時執(zhí)行代碼可以用performSelector:onThread:withObject:waitUntilDone:;
4.指針與數組名的關系?
int arrayName[4] = {10, 20, 30, 40}; int *p = (int *)(&arrayName + 1); NSLog(@"%d", (&arrayName - 1)); 1.(&arrayName + 1):&arrayName是數組的地址(等價于指向arrayName數組的指針) 2.增加 1 會往后移動16個字節(jié)瘩蚪,開始是4個字節(jié)的位置泉懦,移動后就是16個字節(jié)后面的位置(也就是目前位置是20個字節(jié)) 3.最后又賦值給,int類型的指針p(int類型占4個字節(jié)) 4.所以(p - 1)就是減去4個字節(jié)疹瘦,變成為16個字節(jié)的位置崩哩,輸出的(p - 1)值為40 int *p = (int *)(&arrayName + 1); NSLog(@"%d", *(p - 1));//輸出結果為 40
5.#import 和#include有 么區(qū)別?@class呢?#import <>和 #import"" 有 么區(qū)別?
import是OC導入頭文件的關鍵字,#include是C/C++導入頭文件的關鍵字 使用#import只導入一次不會重復導入,相當于#include和#pragma once;(使用#include可能會出現循環(huán)引用,使用#pragma once消除這種可能) @class一般用于聲明某個字符串作為類名使用,它只是聲明了一個類名,沒有導入.h文件中的內容,不會引起交叉編譯問題 import< >代表導入系統(tǒng)自帶的框架 import" "代表導入我們自己創(chuàng)建的文件,導入的使我們.h文件,也就是頭文件
朋友贈送的資料:
最近需要面試,簡歷言沐,內推邓嘹,學習進階的可以看看 ↓↓↓↓↓↓
iOS入門到進階資料整理:https://docs.qq.com/doc/DVU5LY1Bsb3dSZ3Nn
6.屬性readwrite.readonly,assign,retain,copy,nonatomic 什么作用 ? 在哪種情況下 ?
readwrite 是可讀可寫特性;需要生成getter方法和setter方法時(補充:默認屬性险胰,將生成不帶額外參數的getter和setter方法(setter方法只有一個參數)) readonly 是只讀特性 只會生成getter方法 不會生成setter方法 ;不希望屬性在類外改變 assign 是賦值特性汹押,setter方法將傳入參數賦值給實例變量;僅設置變量時起便; retain 表示持有特性棚贾,setter方法將傳入參數先保留窖维,再賦值,傳入參數的retaincount會+1; copy 表示拷貝特性鸟悴,setter方法將傳入對象復制一份陈辱;需要完全一份新的變量時。 nonatomic 非原子操作细诸,決定編譯器生成的setter getter是否是原子操作沛贪,atomic表示多線程安全,一般使 用nonatomic
7.IBOutlet 連出來的視圖屬性為什么可以被設置成weak?
在 storyboard 中添加一個控件引用關系是這樣的(以 UIbutton 為例): UIviewController -> UIview -> UIbutton 此時 UIviewController 強引用著 UIview , UIview 強引用著 UIbutton , IBoutlet 連線到控制器的. m 或者. h 中作為視圖的屬性時用 weak 修飾就可以了, (覺得用 strong 修飾也可以但是沒有必要) 添加到子控件也是強引用: UIbutton 就是添加到了 UIviewController 的 view 上
8 預處 指令define 聲明 個常數震贵, 以表明 中有多 少秒(忽 閏 問題)利赋。
define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
9.重寫-個NSString類型的,retain 式聲明name屬性的 setter和getter 法(MRC)
屬性的三大特性:語義特性,原子特性,讀寫特性. 同時重寫setter和getter方法,@synchronized name = _name,關聯屬性和實例變量 如 -(void)setName:(NSString *)name{ if(_name != name){ [_name retain]; [_name release]; _name = name; } } -(NSString *)name{ return [[_name retain]autorelease] }
10.分析json猩系、xml 的區(qū)別? json媚送、xml 解析 式的底層是如何讓處理的
(一)JSON與XML的區(qū)別: (1)可讀性方面:基本相同,XML的可讀性比較好寇甸; (2)可擴展性方面:都具有良好的擴展性塘偎; (3)編碼難度方面:相對而言,JSON的編碼比較容易拿霉; (4)解碼難度:JSON的解碼難度基本為零吟秩,XML需要考慮子節(jié)點和父節(jié)點; (5)數據體積方面:JSON相對于XML來講绽淘,數據體積小涵防,傳遞的速度比較快; (6)數據交互方面:JSON與javascript的交互更加方便沪铭,更容易解析處理壮池,更好的數據交互; (7)數據描述方面:XML對數據描述性比較好 (8)傳輸速度方面:JSON的速度遠遠快于XML杀怠。 (二)JSON與XML底層實現原理: ∫铩(1)JSON底層原理:遍歷字符串中的字符,最終根據格式規(guī)定的特殊字符赔退,比如{}熏矿、[]、:等進行區(qū)分离钝,{}號表示字典票编,[]號表示數組,:號是字典的鍵和值的分水嶺卵渴,最終仍是將JSON轉化為字典慧域,只不過字典中的值可能是“字典、數組或者字符串而已”浪读。 ∥袅瘛(2)XML底層原理:XML解析常用的解析方法有兩種:DOM解析和SAX解析辛藻;DOM采用的是樹形結構的方式訪問XML文檔,而SAX采用的是事件模型互订;DOM解析把XML文檔轉化為一個包含其內容的樹吱肌,并可以對樹進行遍歷,使用DOM解析器的時候需要處理整個XML文檔仰禽,所以對內存和性能的要求比較高氮墨;SAX在解析XML文檔的時候可以觸發(fā)一系列的事件,當發(fā)現給定的tag的時候吐葵,他可以激活一個回調方法规揪,告訴該方法指定的標簽已經找到,SAX對內存的要求通常會比較低温峭,因為他讓開發(fā)人員自己來決定所要處理的tag猛铅,特別是當開發(fā)人員只需要處理文檔中所包含部分數據時,SAX這種擴展能力得到了更好的體現凤藏。
11.對程序性能的優(yōu)化你有什么建議?
1.使用復用機制 2.盡可能設置 View 為不透明 3.避免臃腫的 XIB 文件 4.不要阻塞主線程 5.圖片尺寸匹配 UIImageView 6.選擇合適的容器 7.啟用 GZIP 數據壓縮 8.View 的復用和懶加載機制 9奸忽、緩存 服務器的響應信息(response)。 圖片揖庄。 計算值栗菜。比如:UITableView 的 row heights。 10.關于圖形繪制 11.處理 Memory Warnings 在 AppDelegate 中實現 - [AppDelegate applicationDidReceiveMemoryWarning:] 代理方法抠艾。 在 UIViewController 中重載 didReceiveMemoryWarning 方法苛萎。 監(jiān)聽 UIApplicationDidReceiveMemoryWarningNotification 通知桨昙。 12.復用高開銷的對象 13.減少離屏渲染(設置圓角和陰影的時候可以選用繪制的方法) 14.優(yōu)化 UITableView 通過正確的設置 reuseIdentifier 來重用 Cell检号。 盡量減少不必要的透明 View。 盡量避免漸變效果蛙酪、圖片拉伸和離屏渲染齐苛。 當不同的行的高度不一樣時,盡量緩存它們的高度值桂塞。 如果 Cell 展示的內容來自網絡凹蜂,確保用異步加載的方式來獲取數據,并且緩存服務器的 response阁危。 使用 shadowPath 來設置陰影效果玛痊。 盡量減少 subview 的數量,對于 subview 較多并且樣式多變的 Cell狂打,可以考慮用異步繪制或重寫 drawRect擂煞。 盡量優(yōu)化 - [UITableView tableView:cellForRowAtIndexPath:] 方法中的處理邏輯,如果確實要做一些處理趴乡,可以考慮做一次对省,緩存結果蝗拿。 選擇合適的數據結構來承載數據,不同的數據結構對不同操作的開銷是存在差異的蒿涎。 對于 rowHeight哀托、sectionFooterHeight、sectionHeaderHeight 盡量使用常量劳秋。 15.選擇合適的數據存儲方式 在 iOS 中可以用來進行數據持有化的方案包括: NSUserDefaults仓手。只適合用來存小數據。 XML俗批、JSON俗或、Plist 等文件。JSON 和 XML 文件的差異在「選擇正確的數據格式」已經說過了岁忘。 使用 NSCoding 來存檔辛慰。NSCoding 同樣是對文件進行讀寫,所以它也會面臨必須加載整個文件才能繼續(xù)的問題干像。 使用 SQLite 數據庫帅腌。可以配合 FMDB 使用麻汰。數據的相對文件來說還是好處很多的速客,比如可以按需取數據、不用暴力查找等等五鲫。 使用 CoreData溺职。也是數據庫技術,跟 SQLite 的性能差異比較小位喂。但是 CoreData 是一個對象圖譜模型浪耘,顯得更面向對象;SQLite 就是常規(guī)的 DBMS塑崖。 16.減少應用啟動時間 快速啟動應用對于用戶來說可以留下很好的印象七冲。尤其是第一次使用時。 保證應用快速啟動的指導原則: 盡量將啟動過程中的處理分拆成各個異步處理流规婆,比如:網絡請求澜躺、數據庫訪問、數據解析等等抒蚜。 避免臃腫的 XIB 文件掘鄙,因為它們會在你的主線程中進行加載。重申:Storyboard 沒這個問題嗡髓,放心使用操漠。 注意:在測試程序啟動性能的時候,最好用與 Xcode 斷開連接的設備進行測試器贩。因為 watchdog 在使用 Xcode 進行調試的時候是不會啟動的颅夺。 17.使用 Autorelease Pool (內存釋放池) 18.imageNamed 和 imageWithContentsOfFile
12.runloop 和線程有什么關系?
runloop與線程是一一對應的朋截,一個runloop對應一個核心的線程,為什么說是核心的吧黄,是因為runloop是可以嵌套的部服,但是核心的只能有一個,他們的關系保存在一個全局的字典里拗慨。 runloop是來管理線程的廓八,當線程的runloop被開啟后,線程會在執(zhí)行完任務后進入休眠狀態(tài)赵抢,有了任務就會被喚醒去執(zhí)行任務剧蹂。 runloop在第一次獲取時被創(chuàng)建,在線程結束時被銷毀烦却。 對于主線程來說宠叼,runloop在程序一啟動就默認創(chuàng)建好了。 對于子線程來說其爵,runloop是懶加載的冒冬,只有當我們使用的時候才會創(chuàng)建,所以在子線程用定時器要注意:確保子線程的runloop被創(chuàng)建摩渺,不然定時器不會回調简烤。
13 介紹下layoutSubview和drawRect
layoutSubviews調用情況 init初始化UIView不會觸發(fā)調用 addSubview會觸發(fā)調用 改變view的width和height的時候回觸發(fā)調用 一個UIScrollView滾動會觸發(fā)調用 旋轉screen會觸發(fā)調用 改變一個UIView大小的時候會觸發(fā)superView的layoutSubviews事件 直接調用setLayoutSubviews會觸發(fā)調用 -(void)viewWillAppear:(BOOL)animated會觸發(fā)一次調用 -(void)viewDidAppear:(BOOL)animated 看情況,可能有調用 drawRect調用情況 如果UIView沒有設置frame大小摇幻,直接導致drawRect不能被自動調用横侦。 drawRect在loadView和viewDidLoad這兩個方法之后調用 調用sizeToFit后自動調用drawRect 通過設置contentMode值為UIViewContentModeRedraw。那么每次設置或者更改frame自動調用drawRect绰姻。 直接調用setNeedsDisplay或者setNeedsDisplayInRect會觸發(fā)調用
14.寫個“標準“宏MIN枉侧,這個宏輸兩個參數并返回較小的那個
MIN(A,B) ((A) <= (B) ? (A) : (B))
15.類別有什么作用
1.擴展已有的類(添加方法) 2.可以通過runtime添加屬性
- 什么是method swizzing?講 講你的使 場景以及使 時的注意事項
1.給擴展添加屬性 2.替換系統(tǒng)方法的的實現
22.講講iOS事件響應鏈的原理
1、響應者鏈通常是由視圖(UIView)構成的龙宏; 2棵逊、一個視圖的下一個響應者是它視圖控制器(UIViewController)(如果有的話)伤疙,然后再轉給它的父視圖(Super View)银酗; 3、視圖控制器(如果有的話)的下一個響應者為其管理的視圖的父視圖徒像; 4黍特、單例的窗口(UIWindow)的內容視圖將指向窗口本身作為它的下一個響應者 需要指出的是,Cocoa Touch應用不像Cocoa應用锯蛀,它只有一個UIWindow對象灭衷,因此整個響應者鏈要簡單一點; 5旁涤、單例的應用(UIApplication)是一個響應者鏈的終點翔曲,它的下一個響應者指向nil迫像,以結束整個循環(huán)。
23.你在什么場景下會選擇使 Category
1.擴展已有的類(添加方法)
24.UIview 和CAlayer 是什么關系? 你 CLayer做過什么?
- 首先UIView可以響應事件瞳遍,Layer不可以.
- UIView是CALayer的delegate 3. UIView主要處理事件闻妓,CALayer負責繪制就更好 4. 每個 UIView 內部都有一個 CALayer 在背后提供內容的繪制和顯示,并且 UIView 的尺寸樣式都由內部的 Layer 所提供掠械。兩者都有樹狀層級結構由缆,layer 內部有 SubLayers,View 內部有 SubViews.但是 Layer 比 View 多了個AnchorPoint 創(chuàng)建隱式動畫 繪制邊框圓角
25.如何處理UITableVier 中Cell 動態(tài)計算高度的問題猾蒂,都有哪些方案?
1均唉、你的Cell要使用AutoLayout來布局約束這是必須的; 設置tableview的estimatedRowHeight為一個非零值肚菠,這個屬性是設置一個預估的高度值舔箭,不用太精確。 設置tableview的rowHeight屬性為UITableViewAutomaticDimension 2.第三方 UITableView+FDTemplateLayoutCell
26.AutoLayout 中的優(yōu)先級是什么? UIScrollView 中使用Autolayout 會出現什么問題?
代碼計算frame -> autoreszing(父控件和子控件的關系) -> autolayout(任何控件都可以產生關系) -> sizeclass 可以設置兩個看似有沖突的約束蚊逢,但設置不同的優(yōu)先級之后就不會有沖突了限嫌,當其中一個約束失效之后,另一個優(yōu)先級比較低的約束就會起作用
27.NSIRLConnection 和NSLRLSession 的區(qū)別是 么? NSURLProtocol是做什么的?
1.下載 NSURLConnection下載文件時时捌,先是將整個文件下載到內存怒医,然后再寫入到沙盒,如果文件比較大奢讨,就會出現內存暴漲的情況稚叹。 而使用NSURLSessionUploadTask下載文件,會默認下載到沙盒中的tem文件中拿诸,不會出現內存暴漲的情況扒袖,但是在下載完成后會把tem中的臨時文件刪除,需要在初始化任務方法時亩码,在completionHandler回調中增加保存文件的代碼 2.請求方法的控制 NSURLConnection實例化對象季率,實例化開始,默認請求就發(fā)送(同步發(fā)送),不需要調用start方法描沟。而cancel可以停止請求的發(fā)送飒泻,停止后不能繼續(xù)訪問,需要創(chuàng)建新的請求吏廉。 NSURLSession有三個控制方法泞遗,取消(cancel)、暫停(suspend)席覆、繼續(xù)(resume)史辙,暫停以后可以通過繼續(xù)恢復當前的請求任務。 使用NSURLSession進行斷點下載更加便捷. NSURLSession的構造方法(sessionWithConfiguration:delegate:delegateQueue)中有一個NSURLSessionConfiguration類的參數可以設置配置信息,其決定了cookie聊倔,安全和高速緩存策略晦毙,最大主機連接數,資源管理耙蔑,網絡超時等配置结序。NSURLConnection不能進行這個配置,相比較與NSURLConnection依賴與一個全局的配置對象纵潦,缺乏靈活性而言徐鹤,NSURLSession有很大的改進
28.怎么高效的實現控件的圓角效果
繪制圓角 -(UIImageView *)roundedRectImageViewWithCornerRadius:(CGFloat)cornerRadius { UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:cornerRadius]; CAShapeLayer *layer = [CAShapeLayer layer]; layer.path = bezierPath.CGPath; self.layer.mask = layer; return self; }
32.說說你了解weak屬性?
weak關鍵字在OC中屬于比較基礎的知識此特性表明該屬性定義了一種關系“非擁有關系”(nonowning relationship)。為這種屬性設置新值得時邀层,設置方法既不保留新值返敬,也不釋放舊值。此特性同assign類似寥院,然后在屬性所指的對象遭到摧毀時劲赠,屬性值也會清空(nil out)。 弱引用秸谢,不決定對象的存亡凛澎。即使一個對象被持有無數個弱引用,只要沒有強引用指向它估蹄,那么還是會被清除塑煎。
33.假如Controller太臃腫,如何優(yōu)化?
1.將網絡請求抽象到單獨的類中 方便在基類中處理公共邏輯臭蚁; 方便在基類中處理緩存邏輯最铁,以及其它一些公共邏輯; 方便做對象的持久化垮兑。 2.將界面的封裝抽象到專門的類中 構造專門的 UIView 的子類冷尉,來負責這些控件的拼裝。這是最徹底和優(yōu)雅的方式系枪,不過稍微麻煩一些的是雀哨,你需要把這些控件的事件回調先接管,再都一一暴露回 Controller私爷。 3.構造 ViewModel 借鑒MVVM雾棺。具體做法就是將 ViewController 給 View 傳遞數據這個過程,抽象成構造 ViewModel 的過程当犯。 4.專門構造存儲類 專門來處理本地數據的存取垢村。 5.整合常量
34.項目中網絡層如何做安全處理?
1.判斷API的調用請求是否來自于經過授權的APP割疾。如若不是則拒絕請求訪問 2.在數據請求的過程中進行URL加密處理:防止反編譯嚎卫,接口信息被靜態(tài)分析。 3.數據傳輸加密:對客戶端傳輸數據提供有效的加密方案,以防止網絡接口的攔截拓诸。 如果可以盡量使用HTTPS侵佃,可以有效的避免接口數據在傳輸中被攻擊。
35.main()之前的過程有哪些?
在iOS中 main.m 是我們所熟悉的程序入口奠支。但是在在此之前其實程序以及做了很多事了馋辈。如系統(tǒng)會獲取dyld的路徑,并加載倍谜。加載程序中的依賴庫迈螟。調用所有的+ load方法,并返回main函數地址尔崔。
其他值得看的總結:
2.“新”攜程答毫,阿里,騰訊iOS面試常見問題合集(附答案)
BAT面試題
騰訊一面 1.使用了第三方庫, 有看它們是怎么實現的嗎季春? 2.強連通量算法了解嘛洗搂? 3.遇到tableView卡頓嘛?會造成卡頓的原因大致有哪些载弄? 4.M耘拇、V、C相互通訊規(guī)則你知道的有哪些宇攻? 5.NStimer準嗎惫叛?談談你的看法?如果不準該怎樣實現一個精確的NSTimer? 答案詳見:http://www.reibang.com/p/9cf497351118
騰訊二面: 1.編譯過程做了哪些事情逞刷; 2.字典大致實現原理挣棕; 3.block和函數指針的理解; 4.一般開始做一個項目亲桥,你的架構是如何思考的洛心? 5.你了解的UIKit結構? 答案詳見:http://www.reibang.com/p/c8d11c0500b3
騰訊三面 1.OC你了解的鎖有哪些题篷?在你回答基礎上進行二次提問词身; 追問一:自旋和互斥對比? 追問二:用C/OC/C++番枚,任選其一法严,實現自旋或互斥?口述即可葫笼! 2.內存泄漏可能會出現的幾種原因深啤,聊聊你的看法? 追問一:非OC對象如何處理路星? 追問二:若常用框架出現內存泄漏如何處理溯街? 3.容錯處理你們一般是怎么做的? 4.項目開始容錯處理沒做?如何防止攔截潛在的崩潰呈昔? 答案詳見:http://www.reibang.com/p/d1f1f5925962
阿里 1.dSYM你是如何分析的挥等? 2.多線程有哪幾種?你更傾向于哪一種堤尾? 3.單例弊端肝劲? 4.如何把異步線程轉換成同步任務進行單元測試? 5.介紹下App啟動的完成過程郭宝? 6.比如App啟動過慢辞槐,你可能想到的因素有哪些? 7.0x8badf00d表示是什么粘室? 8.怎么防止反編譯催蝗? 9.說說你遇到到的技術難點? 10.說說你了解的第三方原理或底層知識育特? 答案詳見:http://url.cn/5oWSdgZ
聲明: 內容只是為了促進學習,并不是為行業(yè)增加內卷.希望各位不要把這些題目作為面試素材為難求職者.需要新面試題和求職簡歷可以直接評論或者加微信:uuzz0125丙号。