æ–?/ 何æ“væ¶?/strong>
扎实的基¼‹€çŸ¥è¯†ã€é«˜è´¨é‡çš„代ç ã€æ¸…æ™°çš„æ€èµ\ã€ä¼˜åŒ–代ç 的能力ã€ä¼˜¿U€çš„综åˆèƒ½åŠ›æ˜¯¾~–程技术é¢è¯•的五大è¦ç‚¹ã€?/p>
扑ַ¥ä½œä¸€ç›´æ˜¯ä¸€ä¸ªçƒé—¨è¯é¢˜ã€‚è¦æƒÏx‰¾åˆ°å¿ƒä»ªçš„工作åQŒéš¾å…需è¦ç»˜q‡å¤šè½®é¢è¯•。编½E‹é¢è¯•是½E‹åºå‘˜é¢è¯•过½E‹ä¸æœ€ä¸ºé‡è¦çš„一个环节。如果能在编½E‹é¢è¯•çš„çŽ¯èŠ‚å……åˆ†å±•ç¤ºè‡ªå·±çš„èƒ½åŠ›ï¼Œé‚£ä¹ˆæ‹¿åˆ°ä¸æ„çš„Offerž®±æ˜¯æ°´åˆ°æ¸ æˆçš„事情ã€?/p>
我先åŽåœ¨‹Æ§ç‰¹å…‹ã€å¾®è½¯å’Œæ€ç§‘½{‰å…¬å怓Q软äšg工程师,多次接å—ä»–ähçš„é¢è¯•ï¼ŒåŒæ—¶ä¹Ÿé¢è¯•过很多人。æ€È»“é¢è¯•与被é¢è¯•çš„ç»éªŒï¼Œæˆ‘å‘现尽½Ž¡é¢è¯•å®˜çš„èƒŒæ™¯ã€æ€§æ ¼å„ä¸ç›¸åŒåQŒä½†éƒ½å…³æ³¨åº”è˜è€…五¿Uç´ è´¨ï¼šæ‰Žå®žçš„åŸº¼‹€çŸ¥è¯†åQ›èƒ½å†™é«˜è´¨é‡çš„代ç ;分æžé—®é¢˜æ—¶æ€èµ\清晰åQ›èƒ½ä¼˜åŒ–æ—‰™—´æ•ˆçŽ‡å’Œç©ºé—´æ•ˆçŽ‡ï¼›å…·å¤‡åŒ…æ‹¬å¦ä¹ èƒ½åŠ›ã€æ²Ÿé€šèƒ½åŠ›ã€å‘æ•£æ€ç»´èƒ½åŠ›½{‰åœ¨å†…çš„¾l¼åˆèƒ½åŠ›ã€?span id="more-8435" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; ">
扎实的基¼‹€çŸ¥è¯†
扎实的基本功是æˆä¸ÞZ¼˜¿U€½E‹åºå‘˜çš„剿æ¡äšgåQŒå› æ¤é¢è¯•官首è¦å…Ïx³¨åº”è˜è€…çš„ç´ è´¨åÏx˜¯å¦å…·å¤‡æ‰Žå®žçš„基础。通常基本功在¾~–程é¢è¯•环节体现在两个方é¢ï¼šä¸€æ˜¯ç¼–½E‹è¯a€åQŒäºŒæ˜¯æ•°æ®ç»“构和½Ž—法ã€?/p>
æ¯ä¸ª½E‹åºå‘˜è‡³ž®‘è¦ç†Ÿç»ƒæŽŒæ¡1~2门编½E‹è¯a€ã€‚é¢è¯•官从应è˜è€…在é¢è¯•˜q‡ç¨‹ä¸å†™çš„代ç 以åŠè·Ÿ˜q›çš„æé—®ä¸ï¼Œèƒ½çœ‹å‡ÞZ»–¾~–程è¯è¨€æŽŒæ¡çš„熟¾lƒç¨‹åº¦ã€‚以大部分公å”R¢è¯•è¦æ±‚çš„C++ä¸ÞZ¾‹åQŒå¦‚果函数需è¦ä¼ 入一个指针,é¢è¯•官å¯èƒ½ä¼šé—®æ˜¯å¦éœ€è¦äØ“è¯¥æŒ‡é’ˆåŠ ä¸ŠconståQŒæŠŠconståŠ åœ¨æŒ‡é’ˆä¸åŒçš„ä½¾|®æœ‰ä»€ä¹ˆåŒºåˆ«ï¼›å¦‚果写的函数需è¦ä¼ å…¥çš„å‚æ•°æ˜¯ä¸€ä¸ªå¤æ‚类型的实例åQŒé¢è¯•官å¯èƒ½ä¼šé—®ä¼ 入值傿•°æˆ–è€…å¼•ç”¨å‚æ•°æœ‰ä»€ä¹ˆåŒºåˆ«ï¼Œä»€ä¹ˆæ—¶å€™éœ€è¦äØ“ä¼ å…¥çš„å¼•ç”¨å‚æ•°åŠ ä¸Šconstã€?/p>
数殾l“构通常是编½E‹é¢è¯•过½E‹ä¸è€ƒæŸ¥çš„é‡ç‚V€‚在å‚åŠ é¢è¯•之å‰åQŒåº”è˜è€…需è¦ç†Ÿ¾lƒæŽŒæ¡é“¾è¡¨ã€æ ‘ã€æ ˆã€é˜Ÿåˆ—以åŠå“ˆå¸Œè¡¨½{‰æ•°æ®ç»“构以åŠå®ƒä»¬çš„æ“ä½œã€‚å¦‚æžœæˆ‘ä»¬ç•™å¿ƒå„大公å¸çš„é¢è¯•题,ž®×ƒ¼šå‘çŽ°é“¾è¡¨å’ŒäºŒå‰æ ‘相关的问题是很多é¢è¯•官喜‹Æ¢é—®çš„问题。这斚w¢çš„问题看似简å•ï¼Œä½†çœŸæ£æŽŒæ¡ä¹Ÿå¾ˆä¸å®ÒŽ˜“åQŒç‰¹åˆ«é€‚åˆåœ¨çŸçŸå‡ å分钟的é¢è¯•æ—‰™—´å†…检验应è˜è€…的基本功。如果应è˜è€…事先对链表的æ’å…¥å’Œåˆ é™¤¾l“点了如指掌åQŒå¯¹äºŒå‰æ ‘çš„å„ç§é历æ–ÒŽ³•çš„åó@环和递归写法都烂熟于胸,那么真æ£åˆîCº†é¢è¯•时也ž®±æ¸¸åˆƒæœ‰ä½™äº†ã€?/p>
大部分公å¸å¯¹½Ž—æ³•çš„è¦æ±‚éƒ½åªæ˜¯è€ƒæŸ¥æŸ¥æ‰¾å’ŒæŽ’åºã€‚应è˜è€…å¯ä»¥åœ¨äº†è§£å„ç§æŸ¥æ‰¾å’ŒæŽ’åºç®—法的基础上,é‡ç‚¹æŽŒæ¡äºŒåˆ†æŸ¥æ‰¾ã€å½’òq¶æŽ’åºå’Œå¿«é€ŸæŽ’åºï¼Œå› äØ“å¾ˆå¤šé¢è¯•é¢˜éƒ½åªæ˜¯˜q™äº›½Ž—法的å˜ä½“而已。比如把排åºå¥½çš„æ•°ç»„çš„å‰é¢è‹¥òq²ä¸ªæ•°å—¿UÕdˆ°æ•°ç»„çš„åŽé¢ï¼Œç„¶åŽé—®æ€Žæ ·åœ¨è¿™ä¸ªæ•°¾l„之䏿‰¾åˆ°æœ€ž®çš„æ•°å—。这é“题其本质就是考查二分查找。少数对½Ž—法很é‡è§†çš„公叿¯”如è°ähŒæˆ–者百度,˜q˜ä¼šè¦æ±‚应è˜è€…熟¾lƒæŽŒæ¡åЍæ€è§„划和贪婪½Ž—法。如果对˜q™ç§¾cÕdž‹çš„公叿„Ÿå…´è¶£åQŒé‚£ä¹ˆåº”è˜è€…在å‚åŠ é¢è¯•之剞®±åº”è¯¥åŠ å¼ºå¯¹ç›¸å…³½Ž—æ³•é¢˜ç›®çš„ç»ƒä¹ ã€?strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; ">
高质é‡çš„代ç
åªæœ‰æ³¨é‡è´¨é‡çš„程åºå‘˜åQŒæ‰èƒ½å†™å‡ºé²‹‚’稳定的大型软äšg。在é¢è¯•˜q‡ç¨‹ä¸ï¼Œé¢è¯•官æ€ÖM¼šæ ¼å¤–å…Ïx³¨è¾¹ç•Œæ¡äšgã€ç‰¹ŒDŠè¾“å…¥ç‰çœ‹ä¼¼¾l†æžæœ«èŠ‚ä½†å®žè´¨è‡³å…³é‡è¦çš„地方åQŒä»¥æ¤æ¥åˆ†æžåº”è˜è€…æ˜¯å¦æ³¨é‡ä»£ç è´¨é‡ã€‚很多时候,é¢è¯•官å‘现应è˜è€…写出æ¥çš„代ç åªèƒ½å®Œæˆæœ€åŸºæœ¬çš„功能,一旦输入特ŒDŠçš„边界æ¡äšg傿•°ž®×ƒ¼šé”™è¯¯ç™‘Ö‡ºç”šè‡³½E‹åºå´©æºƒã€?/p>
举个很多应è˜è€…都被问˜q‡çš„一个问题:写一个函敎ͼŒæŠŠå—½W¦ä¸²è½¬åŒ–æˆæ•´æ•°ã€‚è¿™é“题看似很简å•,¾l大部分计算æœÞZ¸“业的毕业生都能用å行以内的代ç å®žçŽ°æœ€åŸºæœ¬çš„åŠŸèƒ½ã€‚å¯æ˜¯åœ¨å®žé™…é¢è¯•˜q‡ç¨‹ä¸ï¼Œå个应è˜è€…ä¸åªæœ‰ä¸€ä¸ªäh能通过˜q™é“题的é¢è¯•åQŒå› 为ç»å¤§éƒ¨åˆ†åº”è˜è€…ä¸èƒ½å…¨é¢è€ƒè™‘到儿U特ŒDŠè¾“入,比如输入的嗽W¦ä¸²å«ä¸æœ‰éžæ•°å—的符å—÷€åœ¨å—符串的开头有æ£è´Ÿå—÷€å—½W¦ä¸²ä¸æœ‰æ£è´Ÿå·ä½†å…¶ä½¾|®ä¸æ˜¯åœ¨å—符串的开头ã€?/p>
除æ¤ä¹‹å¤–åQŒé¢è¯•官˜q˜å¸Œæœ›åº”è˜è€…能考虑的边界æ¡ä»¶åŒ…æ‹?147483647åQ?×7FFFFFFFåQŒint能表½Cºçš„æœ€å¤§æ£æ•´æ•°åQ‰å’Œ-2147483648åQ?×80000000åQŒint能表½Cºçš„æœ€ž®è´Ÿæ•´æ•°åQ‰ã€?/p>
除了边界æ¡äšg和特ŒDŠè¾“入考虑ä¸èƒö之外åQŒé¢è¯•官˜q˜æœ‰ä¸€ä¸ªä¸èƒ½å®¹å¿çš„错误ž®±æ˜¯½E‹åºå´©æºƒã€‚é¢è¯•时很多应è˜è€…都会忘记对½IºæŒ‡é’ˆåšç‰ÒŽ®Šå¤„ç†è€Œå¯¼è‡´ç¨‹åºå´©æºƒã€‚如果é¢è¯•æ—¶é‡åˆ°é“¾è¡¨ã€äºŒå‰æ ‘相关的题目,应è˜è€…一定è¦ç‰¹åˆ«ž®å¿ƒã€‚å› ä¸ø™¿™ä¸¤ç§é¢˜ç›®å¯¹åº”的代ç 里通常会有大é‡çš„æŒ‡é’ˆæ“作,如果考虑ä¸å‘¨åˆŽÍ¼Œž®±æœ‰å¯èƒ½å¯¹ç©ºæŒ‡é’ˆ˜q›è¡Œæ“作而ä‹É½E‹åºå´©æºƒã€?/p>
比如˜q™æ ·ä¸€é“题åQšè¾“å…¥ä¸€ä¸ªé“¾è¡¨çš„å¤´æŒ‡é’ˆå’Œä¸€ä¸ªæ— ½W¦å·æ•´æ•°kåQŒè¾“凸™¯¥é“¾è¡¨çš„倒数½W¬k个结ç‚V€‚这个题目很多äh都能惛_ˆ°ç”¨ä¸¤ä¸ªæŒ‡é’ˆæ¥è§£å†³åQšç¬¬ä¸€ä¸ªæŒ‡é’ˆå…ˆåœ¨é“¾è¡¨ä¸Š¿UÕdЍk-1æ¥ï¼ŒåŒæ—¶è®©ç¬¬ä¸€ä¸ªæŒ‡é’ˆå’Œ½W¬äºŒä¸ªæŒ‡é’ˆåœ¨é“¾è¡¨ä¸Šç§»åŠ¨ã€‚å½“½W¬ä¸€ä¸ªæŒ‡é’ˆç§»åŠ¨åˆ°ž®¾æŒ‡é’ˆæ—¶åQŒç¬¬äºŒä¸ªæŒ‡é’ˆæŒ‡å‘的就是倒数½W¬k个结ç‚V€‚ç„¶è€Œä¸æ˜¯æ¯ä¸ªåº”è˜è€…éƒ½èƒ½æ ¹æ®æ£¼‹®æ€èµ\写出完整的代ç 。丞®‘应è˜è€…会忽略两ç§å¯èƒ½åQšä¸€æ˜¯è¾“入的链表头指针有å¯èƒ½æ˜¯ç©ºæŒ‡é’ˆåQ›äºŒæ˜¯é“¾è¡¨ä¸Š¾l“点的数目有å¯èƒ½ž®‘于k个。忽略这两点的代ç 都å˜åœ¨å´©æºƒçš„å¯èƒ½ï¼Œä»Žè€Œå¾ˆéš¾èŽ·å¾—é¢è¯•官的é’çã€?/p>
è¦æƒ³å†™å‡ºé²æ£’的高质é‡ä»£ç åQŒéœ€è¦åœ¨åŠ¨æ‰‹å†™ä»£ç 之剿ƒ³å¥½æµ‹è¯•用例。在写代ç 之å‰ï¼Œå…ˆè¦æƒ›_¥½å„ç§è¾¹ç•Œæ¡äšg和特ŒDŠè¾“入作为测试用例。当代ç 写好之åŽåQŒè‡ªå·±åœ¨å¿ƒé‡Œç”¨ä¹‹å‰æƒ³å¥½çš„‹¹‹è¯•ç”¨ä¾‹æ¥æ£€éªŒè‡ªå·±å†™å‡ºçš„代ç åQŒè¿™æ ·å°±èƒ½åœ¨é¢è¯•官之å‰å‘çŽ°åÆˆè§£å†³é—®é¢˜ã€‚ä»¥æ±‚é“¾è¡¨çš„å€’æ•°½W¬kä¸ªç»“ç‚¹äØ“ä¾‹ï¼Œå¦‚æžœäº‹å…ˆæƒ›_ˆ°äº†è¾“入头指针为空指针和链表上的结ç‚ÒŽ€ÀL•°ž®‘于k˜q™ä¸¤ä¸ªæµ‹è¯•用例,òq¶ä¸”在写好代ç 之åŽåœ¨å¿ƒé‡Œæ¨¡æ‹Ÿä»£ç çš„è¿è¡Œè¿‡½E‹ï¼Œ¼‹®ä¿èƒ½å¤Ÿé€šè¿‡˜q™ä¸¤ä¸ªæµ‹è¯•用例的‹¹‹è¯•åQŒé‚£ä¹ˆè¿™è½®é¢è¯•必然是能够通过的ã€?/p>
清晰的æ€èµ\
åªæœ‰æ€èµ\清晰åQŒåº”è˜è€…æ‰æœ‰å¯èƒ½åœ¨é¢è¯•˜q‡ç¨‹ä¸è§£å†›_¤æ‚的问题。有旉™¢è¯•官会有æ„å‡ºä¸€äº›æ¯”è¾ƒå¤æ‚的问题åQŒä»¥è€ƒæŸ¥èƒ½å¦åœ¨çŸæ—‰™—´å†…åÅžæˆæ¸…æ™°çš„æ€èµ\òq¶è§£å†³é—®é¢˜ã€‚å¯¹äºŽç¡®å®žå¾ˆå¤æ‚的问题,é¢è¯•å®˜ç”šè‡³ä¸æœŸå¾…应è˜è€…能在é¢è¯•ä¸åˆîC¸€ä¸ªå°æ—¶çš„æ—‰™—´é‡Œç»™å‡ºå®Œæ•´çš„½{”案åQŒä»–更看é‡çš„å¯èƒ½˜q˜æ˜¯åº”è˜è€…æ˜¯å¦æœ‰æ¸…æ™°çš„æ€èµ\。é¢è¯•官通常ä¸ä¼šå–œæ¬¢åº”è˜è€…åœ¨æ²¡æœ‰å½¢æˆæ¸…æ™°æ€èµ\之剞®Þp‰çŽ‡åœ°å¼€å§‹å†™ä»£ç åQŒç»“果写出æ¥çš„代ç å®¹æ˜“é€»è¾‘æ··äØ•ã€é”™è¯¯ç™¾å‡ºã€?/p>
应è˜è€…å¯ä»¥ç”¨å‡ 个½Ž€å•çš„æ–ÒŽ³•å¸®åŠ©è‡ªå·±å½¢æˆæ¸…æ™°çš„æ€èµ\ã€?/p>
首先是ä‹Då‡ ä¸ª½Ž€å•的具体例å让自å·Þq†è§£é—®é¢˜ã€‚当一眼看ä¸å‡ºé—®é¢˜ä¸éšè—的规律æ—Óž¼Œå¯ä»¥è¯•ç€ç”?~2ä¸ªå…·ä½“çš„ä¾‹åæ¨¡æ‹Ÿæ“作的过½E‹ï¼Œ˜q™æ ·è¯´ä¸å®šå°±èƒ½é€šè¿‡å…·ä½“çš„ä¾‹åæ‰¾åˆ°æŠ½è±¡çš„规律ã€?/p>
其次å¯ä»¥è¯•ç€ç”¨å›¾å½¢è¡¨½CºæŠ½è±¡çš„æ•°æ®¾l“构。åƒåˆ†æžä¸Žé“¾è¡¨ã€äºŒå‰æ ‘相关的题目时åQŒå¯ä»¥ç”»å‡ºå®ƒä»¬çš„¾l“æž„å›¾æ¥½Ž€åŒ–é¢˜ç›®ã€?/p>
最åŽå¯ä»¥è¯•ç€æŠŠå¤æ‚的问题分解æˆè‹¥òq²ä¸ª½Ž€å•çš„å问题,å†ä¸€ä¸€è§£å†³ã€‚很多基于递归的æ€èµ\åQŒåŒ…括分æ²ÀL³•和动æ€è§„划法åQŒéƒ½æ˜¯æŠŠå¤æ‚的问题分解æˆä¸€ä¸ªæˆ–者多个简å•çš„å问题ã€?/p>
æ¯”å¦‚æŠŠäºŒå‰æœç´¢æ ‘转化排åºçš„åŒå‘é“¾è¡¨è¿™ä¸ªé—®é¢˜å°±å¾ˆå¤æ‚。碰到这个问题,ä¸å¦¨å…ˆç”»å‡?~2ä¸ªå…·ä½“çš„äºŒå‰æœçƒ¦æ ‘åŠå…¶å¯¹åº”的排åºåŒå‘链表åQŒç›´è§‚地感å—äºŒå‰æœçƒ¦æ ‘和排åºçš„åŒå‘链表有哪些è”ç³»ã€‚å¦‚æžœä¸€ä¸‹åæ‰¾ä¸å‡ø™{æ¢çš„规律åQŒå¯ä»¥æŠŠæ•´ä¸ªäºŒå‰æ ‘看å‡ÞZ¸‰éƒ¨åˆ†åQšæ ¹¾l“点ã€å·¦åæ ‘å’Œå³åæ ‘ã€‚å½“é€’å½’åœ°æŠŠè½¬æ¢å·¦å³åæ ‘˜q™ä¸¤ä¸ªå问题解决之åŽåQŒå†æŠŠè{æ¢å·¦å›_æ ‘å¾—åˆ°çš„é“¾è¡¨å’Œæ ¹¾l“点链接èµäh¥åQŒæ•´ä¸ªé—®é¢˜ä¹Ÿž®Þp§£å†³äº†ã€?/p>
优化代ç 的能åŠ?/strong>
优秀的程åºå‘˜å¯ÒŽ—¶é—´å’Œ½Iºé—´çš„æ¶ˆè€—锱铢必较,他们很有‹È€æƒ…䏿–优化自å·Þqš„代ç 。当é¢è¯•官出的题目有多ç§è§£æ³•æ—Óž¼Œé€šå¸¸ä»–会期待应è˜è€…最¾lˆèƒ½å¤Ÿæ‰¾åˆ°æœ€ä¼˜è§£ã€‚è¿™ž®Þp¦æ±‚应è˜è€…在é¢è¯•官æ½Cø™¿˜æœ‰æ›´å¥½çš„解法æ—Óž¼Œä¸èƒ½æ”‘Ö¼ƒæ€è€ƒï¼Œè€Œåº”该努力寻扑֜¨æ—‰™—´æ¶ˆè€—或者空间消耗上å¯ä»¥ä¼˜åŒ–的地æ–V€?/p>
è¦æƒ³ä¼˜åŒ–æ—‰™—´æˆ–者空间效率,首先è¦çŸ¥é“å¦‚ä½•åˆ†æžæ•ˆçŽ‡ã€‚å³ä½¿æ˜¯åŒä¸€ä¸ªç®—法,用ä¸åŒæ–¹æ³•实现的效率å¯èƒ½ä¹Ÿä¼šå¤§ä¸ç›¸åŒåQŒè¦èƒ½å¤Ÿåˆ†æžå‡ºç®—法åŠå…¶ä»£ç å®žçŽ°çš„æ•ˆçŽ‡ã€‚ä¾‹å¦‚æ±‚æ–æ‡L那契数列åQŒå¾ˆå¤šäh喜欢用递归公å¼f(n)=f(n-1)+f(n-2)求解。如果分æžå®ƒçš„é€’å½’è°ƒç”¨æ ‘ï¼Œž®×ƒ¼šå‘现有大é‡çš„计算是é‡å¤çš„åQŒæ—¶é—´æ•ˆçŽ‡æ˜¯ä»¥nçš„æŒ‡æ•°å¢žåŠ ã€‚ä½†å¦‚æžœå…ˆæ±‚f(1)ã€f(2)åQŒå†æ ÒŽ®f(1)å’Œf(2)求出f(3)åQŒæŽ¥ä¸‹æ¥æ ÒŽ®f(2)ã€f(3)求出f(4)åQŒåƈ以椾cÀLŽ¨ç”¨ä¸€ä¸ªåó@环求出f(n)åQŒè¿™¿U计½Ž—方法的旉™—´æ•ˆçއž®±åªæœ‰O(n)åQŒæ¯”å‰é¢é€’归的方法è¦å¥½å¾ˆå¤šã€?/p>
è¦æƒ³ä¼˜åŒ–代ç 的效率,˜q˜è¦ç†ŸçŸ¥å„ç§æ•°æ®¾l“构的优¾~ºç‚¹åQŒåƈ能选择åˆé€‚的数殾l“æž„è§£å†³é—®é¢˜ã€‚æˆ‘ä»¬åœ¨æ•°ç»„ä¸æ ¹æ®ä¸‹æ ‡å¯ä»¥ç”¨O(1)å®ŒæˆæŸ¥æ‰¾ã€‚æ•°¾l„çš„˜q™ä¸ªç‰¹å¾å¯ä»¥ç”¨æ¥å®žçް½Ž€å•的哈希表解军_¾ˆå¤šé¢è¯•题åQŒæ¯”如在å—ç¬¦ä¸²ä¸æ‰‘Öˆ°½W¬ä¸€ä¸ªåªå‡ºçް䏀‹Æ¡çš„å—ç¬¦ã€‚å†æ¯”如ä¸ÞZº†æ‰‘Ö‡ºn个数å—䏿œ€ž®çš„k个数åQŒéœ€è¦ä¸€ä¸ªæ•°æ®å®¹å™¨æ¥å˜å‚¨k个数å—。在˜q™ä¸ªæ•°æ®å®¹å™¨ä¸ï¼Œæˆ‘们希望能够快速地扑ֈ°æœ€å¤§å€¼åƈ且能快速地替æ¢å…¶ä¸çš„æ•°å—。绘q‡æƒè¡¡ï¼Œæˆ‘们å‘çŽ°äºŒå‰æ ‘æ¯”å¦‚æœ€å¤§å †æˆ–è€…çº¢é»‘æ ‘éƒ½æ˜¯å®žçŽ°˜q™ä¸ªæ•°æ®å®¹å™¨çš„ç†æƒ³é€‰æ‹©ã€?/p>
è¦æƒ³ä¼˜åŒ–代ç 的效率,也è¦ç†Ÿç»ƒæŽŒæ¡å¸¸ç”¨çš„算法。é¢è¯•䏿œ€å¸¸ç”¨çš„算法是查找和排åºã€‚如果从头到ž®ùN¡ºåºæ‰«æä¸€ä¸ªæ•°¾l„,需è¦O(n)æ—‰™—´æ‰èƒ½å®ŒæˆæŸ¥æ‰¾æ“作。但如果数组是排åºçš„åQŒåº”用二分查扄¡®—法就能把旉™—´å¤æ‚度é™ä½Žåˆ°O(logn)。排åºç®—法除了能够给数组排åºä¹‹å¤–åQŒè¿˜èƒ½ç”¨æ¥è§£å†›_…¶ä»–问题。比如快速排åºç®—法ä¸çš„Partition函数能够用æ¥åœ¨n个数里查扄¡¬¬k大的数å—åQŒä»Žè€Œå¯ä»¥ç”¨O(n)çš„æ—¶é—´åœ¨æ•°ç»„ä¸æ‰¾åˆ°å‡ºçŽ°æ¬¡æ•°è¶…˜q‡æ•°¾l„长度一åŠçš„æ•°å—。如果é¢è¯•题是一个求最大值或者最ž®å€¼çš„题目åQŒåˆ™å¯ä»¥ž®è¯•用动æ€è§„划法或者贪婪算法,比如用动æ€è§„划法求出数组ä¸è¿ž¾låæ•°ç»„的最大和ã€?/p>
优秀的综åˆèƒ½åŠ?/span>
在é¢è¯•过½E‹ä¸åQŒåº”è˜è€…除了展½Cø™‡ªå·Þqš„¾~–程能力和技术功底之外,˜q˜éœ€è¦å±•½Cø™‡ªå·Þqš„软技能,诸如沟通能力和å¦ä¹ 能力ã€?strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; ">éšç€è½¯äšg¾pÈ»Ÿçš„规模越æ¥è¶Šå¤§ï¼Œè½¯äšgå¼€å‘å·²¾lå‘Šåˆ«äº†å•æ‰“独斗的年代,½E‹åºå‘˜ä¸Žä»–äh的沟通å˜å¾—è¶Šæ¥è¶Šé‡è¦ã€?/strong>在é¢è¯•过½E‹ä¸åQŒé¢è¯•官会观察应è˜è€…在介给å¹ç›®¾l验或者算法æ€èµ\时是å¦è§‚ç‚ÒŽ˜Ž¼‹®ã€é€»è¾‘清晰åQŒåƈ以æ¤åˆ¤æ–他沟通能力的强弱。å¦å¤–,é¢è¯•官也会从应è˜è€…说è¯çš„¼œžæ€å’Œè¯æ°”æ¥åˆ¤æ–ä»–æ˜¯å¦æœ‰å›¢é˜Ÿåˆä½œçš„æ„è¯†ã€‚é€šå¸¸é¢è¯•官ä¸ä¼šå–œ‹Æ¢é«˜å‚²æˆ–者轻视åˆä½œè€…的人ã€?/p>
IT行业知识更新很快åQŒå› æ¤ç¨‹åºå‘˜åªæœ‰å…·å¤‡å¾ˆå¥½çš„å¦ä¹ 能力æ‰èƒ½è·Ÿä¸ŠçŸ¥è¯†æ›´æ›¿çš„æ¥ä¼ã€‚通常é¢è¯•官有两ç§åŠžæ³•è€ƒæŸ¥åº”è˜è€…çš„å¦ä¹ 能力。第一¿U方法是询问应è˜è€…最˜q‘在看什么书ã€ä»Žä¸å¦åˆîCº†å“ªäº›æ–°æŠ€æœ¯ã€‚é¢è¯•官å¯ä»¥ç”¨è¿™ä¸ªé—®é¢˜äº†è§£åº”è˜è€…çš„å¦ä¹ 愿望和å¦ä¹ èƒ½åŠ›ã€‚ç¬¬äºŒç§æ–ÒŽ³•是抛å‡ÞZ¸€ä¸ªæ–°æ¦‚念åQŒæŽ¥ä¸‹æ¥ä»–会观察应è˜è€…能ä¸èƒ½åœ¨è¾ƒçŸæ—¶é—´å†…ç†è§£˜q™ä¸ªæ–°æ¦‚å¿µåÆˆè§£å†³ç›¸å…³çš„é—®é¢˜ã€‚æ¯”å¦‚é¢è¯•å®˜è¦æ±‚应è˜è€…计½Ž—第1500个丑数。很多äh都没有å¬è¯´è¿‡ä¸‘æ•°˜q™ä¸ªæ¦‚念。这旉™¢è¯•官ž®×ƒ¼šè§‚察应è˜è€…é¢å¯¹ä¸‘数这个新概念åQŒèƒ½ä¸èƒ½¾l过æé—®ã€æ€è€ƒã€å†æé—®çš„过½E‹ï¼Œæœ€¾lˆæ‰¾å‡ÞZ¸‘数的规律从而找到解å†Ïx–¹æ¡ˆã€?/p>
知识˜q移能力是一¿U特ŒDŠçš„å¦ä¹ èƒ½åŠ›ã€‚å¦‚æžœæˆ‘ä»¬èƒ½å¤ŸæŠŠå·²ç»æŽŒæ¡çš„知识迿UÕdˆ°å…¶ä»–领域åQŒé‚£ä¹ˆå¦ä¹ 新技术或者解å†Ïx–°é—®é¢˜ž®×ƒ¼šå˜å¾—å®ÒŽ˜“。é¢è¯•官¾l常会先问一个简å•的问题åQŒå†é—®ä¸€ä¸ªå¾ˆå¤æ‚但和å‰é¢çš„简å•问题相关的问题。这旉™¢è¯•官期待应è˜è€…能够从½Ž€å•问题ä¸å¾—到å¯ç¤ºåQŒä»Žè€Œæ‰¾åˆ°è§£å†›_¤æ‚问题的½H门。比如é¢è¯•å®˜å…ˆè¦æ±‚应è˜è€…å†™ä¸€ä¸ªå‡½æ•°æ±‚æ–æ‡L那契数列åQŒå†é—®ä¸€ä¸ªé’蛙蟩å°é˜¶çš„问题:一åªé’蛙一‹Æ¡å¯ä»¥èŸ©ä¸?¾U§å°é˜Óž¼Œä¹Ÿå¯ä»¥èŸ©ä¸?¾U§å°é˜Óž¼Œè¯·é—®˜q™åªé’蛙跳上n¾U§çš„å°é˜¶æ€Õd…±æœ‰å¤šž®‘ç§è·Ïx³•åQŸåº”è˜è€…如果具有较强的知识˜q移能力åQŒå°±èƒ½åˆ†æžå‡ºé’蛙跛_°é˜‰™—®é¢˜å®žè´¨ä¸Šåªæ˜¯æ–æ‡L那契数列的一个应用ã€?/p>
˜q˜æœ‰ä¸å°‘é¢è¯•官喜‹Æ¢è€ƒæŸ¥åº”è˜è€…çš„æŠ½è±¡å»ºæ¨¡èƒ½åŠ›å’Œå‘æ•£æ€ç»´èƒ½åŠ›ã€‚é¢è¯•官从日常生‹zÖM¸æç‚¼å‡ºé—®é¢˜ï¼Œæ¯”如如何判æ–5å¼ æ‰‘å…‹ç‰Œæ˜¯ä¸æ˜¯é¡ºå,考查应è˜è€…能ä¸èƒ½æŠŠé—®é¢˜æŠ½è±¡å‡ºæ¥ç”¨åˆç†çš„æ•°æ®ç»“构表½Cºï¼Œòq¶æ‰¾åˆ°å…¶ä¸çš„规律解决˜q™ä¸ªé—®é¢˜ã€‚é¢è¯•官也å¯ä»¥é™åˆ¶åº”è˜è€…ä¸å¾—ä‹É用常规方法,˜q™è¦æ±‚应è˜è€…具备创新精¼œžï¼Œèƒ½å¤Ÿæ‰“å¼€æ€èµ\从多角度åŽÕdˆ†æžã€è§£å†³é—®é¢˜ã€‚比如é¢è¯•å®˜è¦æ±‚应è˜è€…ä¸ç”¨åŠ å‡ä¹˜é™¤å››åˆ™è¿½Ž—实çŽîC¸¤ä¸ªæ•´æ•°çš„åŠ æ³•ã€‚æ¤æ—‰™¢è¯•官期待应è˜è€…能够打开æ€èµ\åQŒç”¨ä½è¿½Ž—å®žçŽ°æ•´æ•°çš„åŠ æ³•ã€?/p>
ž®ç»“
我们å¯ä»¥ç”¨ä¸‹å›¾æ¥æ€È»“出应è˜è€…需è¦å…·å¤‡çš„ç´ è´¨ã€?/p>
从上囑֯以看出,应è˜è€…在é¢è¯•之å‰éœ€è¦åš‘›_‡†å¤‡ï¼Œå¯¹ç¼–½E‹è¯a€ã€æ•°æ®ç»“构和½Ž—法½{‰åŸº¼‹€çŸ¥è¯†æœ‰å…¨é¢çš„了解。é¢è¯•时如果¼„°åˆ°½Ž€å•的问题应è˜è€…ä¸€å®šè¦æ³¨é‡¾l†èŠ‚å†™å‡ºå®Œæ•´ã€é²‹‚’的代ç ã€‚å¦‚æžœç¢°åˆ°å¤æ‚的问题应è˜è€…å¯ä»¥é€šè¿‡ç”Õd›¾ã€ä‹D具体例å分æžå’Œåˆ†è§£å¤æ‚é—®é¢˜ç‰æ–ÒŽ³•å…ˆç†æ¸…æ€èµ\å†åŠ¨æ‰‹ç¼–½E‹ã€‚除æ¤ä¹‹å¤–,应è˜è€…è¿˜åº”è¯¥ä¸æ–优化旉™—´æ•ˆçŽ‡å’Œç©ºé—´æ•ˆçŽ‡ï¼ŒåŠ›æ±‚æ‰‘Öˆ°æœ€ä¼˜çš„解法。在é¢è¯•˜q‡ç¨‹ä¸ï¼Œåº”è˜è€…还应该ä¸ÕdЍæé—®å¼„æ¸…æ¥šé¢˜ç›®çš„è¦æ±‚åQŒè¡¨çŽ°è‡ªå·Þqš„æ²Ÿé€šèƒ½åŠ›ã€‚å½“é¢è¯•官å‰åŽé—®çš„两个问题有相关性时åQŒå°½é‡æŠŠè§£å†³å‰é¢é—®é¢˜çš„æ€èµ\˜q移到åŽé¢çš„问题ä¸åŽ»åQŒå±•½Cø™‡ªå·Þp‰¯å¥½çš„å¦ä¹ 能力。如果能åšåˆ°˜q™ä¹ˆå‡ 点åQŒé‚£ä¹ˆåº”è˜è€…顺利通过é¢è¯•获得心äÈAçš„èŒä½å°†æ˜¯ç“œç†Ÿè’‚è½çš„事情ã€?/p>