ยืมบทความต่อไปนี้จากhttp://get-that-job-at-google.blogspot.in/
การเข้ารหัสความรู้ C / C ++ และ Java เป็นภาษาการเขียนโปรแกรมที่ต้องการสำหรับ Google Interviewers คุณต้องรู้จักพวกเขาอย่างน้อยหนึ่งคน คุณจะต้องเขียนโค้ดในการสัมภาษณ์ทางโทรศัพท์และในการสัมภาษณ์นอกสถานที่เช่นกัน
หนังสือแนะนำสำหรับการสัมภาษณ์ CS : ความรู้เบื้องต้นเกี่ยวกับอัลกอริทึม - โดย Cormen
สัมภาษณ์การเขียนโปรแกรมสัมผัส
แคร็กสัมภาษณ์การเข้ารหัส
อัลกอริทึมสำหรับการสัมภาษณ์
เว็บไซต์ที่แนะนำสำหรับการฝึกการเข้ารหัส : InterviewStreet, Topcoder
Big-Oนี่คือจุดเริ่มต้นในการเตรียมตัวสำหรับการสัมภาษณ์อัลกอริทึม คุณต้องไม่ต่อสู้กับการวิเคราะห์ความซับซ้อนขั้นพื้นฐานเพราะจะเป็นการรับประกันว่าจะไม่ได้รับการว่าจ้าง คุณควรคุ้นเคยและเข้าใจสัญลักษณ์ O, Θและ. ฉันขอแนะนำส่วนการอ่านเกี่ยวกับการวิเคราะห์ความซับซ้อนจากโครงสร้างข้อมูลและอัลกอริทึมหนังสือ
การเรียงลำดับคุณควรจะสามารถเขียนอัลกอริทึม O (n * lgn) เช่น QuickSort และ MergeSort ได้อย่างง่ายดาย เปรียบเทียบและทำความเข้าใจกับความซับซ้อนของกรณีที่ดีที่สุดเลวร้ายที่สุดและโดยเฉลี่ย ฉันพบว่าตารางนี้บนวิกินั้นมีประโยชน์มาก มันแสดงคุณสมบัติที่สำคัญของอัลกอริทึมการเรียงลำดับทั้งหมด อย่าเพิกเฉยต่ออัลกอริทึม O (n ^ 2) เช่นการเรียงลำดับของบับเบิ้ลหรือการจัดเรียงการแทรกเนื่องจากอัลกอริทึมอื่น ๆ จะปรับปรุงสิ่งเหล่านี้ การสัมภาษณ์มีความรู้เพิ่มเติมเกี่ยวกับการปรับปรุงแนวคิดพื้นฐานการเรียงลำดับอัลกอริทึมจะช่วยในกระบวนการนี้
ตารางแฮชเมื่อสงสัยให้นึกถึงตารางแฮช พวกเขามีประโยชน์ในปัญหาส่วนใหญ่และบ่อยครั้งที่เราช่วยปรับปรุงความซับซ้อนของเวลาปัญหาโดยการแคชผลลัพธ์
ต้นไม้ผ่านการสร้างต้นไม้ขั้นตอนวิธีการสำรวจเส้นทางและการจัดการ คุณควรจะสามารถใช้อัลกอริทึมโดยยึดตามแผนผังการค้นหาแบบไบนารี คุณควรคุ้นเคยกับต้นไม้ที่สมดุลแม้ว่าคุณจะไม่ได้คาดหวังว่าจะเขียนโค้ดสำหรับพวกเขาในการสัมภาษณ์: ต้นไม้ AVL, ต้นไม้สีแดง - ดำ, Trie, ต้นไม้ n-ary เป็นต้นจำเป็นต้องมีความรู้เกี่ยวกับ inorder, postorder และ preorder traversals เราสามารถแก้ปัญหาต้นไม้จำนวนมากได้โดยทำการปรับเปลี่ยนง่ายๆให้กับหนึ่งในเส้นทางลัดเหล่านี้
กราฟ
กราฟเป็นแนวคิดที่สำคัญมากในสาขาวิทยาศาสตร์คอมพิวเตอร์ ฝึกการแสดงกราฟขั้นพื้นฐานทั้งสาม (วัตถุและพอยน์เตอร์เมทริกซ์และรายการคำคุณศัพท์) และทำความคุ้นเคยกับข้อดีข้อเสีย ไม่มีเวลามากในการสัมภาษณ์ดังนั้นคุณไม่ควรคาดหวังบางสิ่งที่ซับซ้อนมาก อย่างไรก็ตามขั้นตอนวิธีกราฟ traversal ขั้นพื้นฐาน (DFS และ BFS) เป็นสิ่งจำเป็นคุณควรนำไปใช้ในการเป็นตัวแทนพื้นฐานทั้งหมด คุณควรจะสามารถใช้อัลกอริทึม Dijkstra หรือ Floyd-Warshall รวมทั้งอัลกอริธึมการขยายต้นไม้ขั้นต่ำ (Kruskal และ Prim) เรียนรู้เกี่ยวกับการเรียงลำดับทอพอโลยีเนื่องจากมีประโยชน์อย่างมากในปัญหาการสั่งซื้อหลายอย่าง
การเขียนโปรแกรมแบบไดนามิกนี่อาจเป็นเรื่องที่สำคัญที่สุดเนื่องจากการใช้งานมีขนาดเล็ก คุณควรใช้อัลกอริธึมแบบไดนามิก 2-3 แบบในช่วงเวลา 35-40 นาที เมื่อคุณตรวจสอบแหล่งข้อมูลในบล็อกนี้หรือบนเว็บคุณจะพบว่าคุณควรคาดหวังคำถามการเขียนโปรแกรมแบบไดนามิกอย่างน้อยหนึ่งคำถามต่อการสัมภาษณ์
ระบบปฏิบัติการเรียนรู้เกี่ยวกับกระบวนการเธรดและปัญหาการทำงานพร้อมกัน รู้เกี่ยวกับ mutexes, semaphores, monitor และวิธีการทำงานของมัน ทำความเข้าใจกับสิ่งที่ deadlock และ livelock คืออะไรและจะหลีกเลี่ยงได้อย่างไร เรียนรู้เกี่ยวกับการสลับบริบทการกำหนดเวลา ฯลฯ
คณิตศาสตร์คุณควรทำความคุ้นเคยกับการนับ combinatorics และความน่าจะเป็น
สิ่งตีพิมพ์ของ Googleอ่านสิ่งพิมพ์ที่มีการแบ่งเส้นทางของ Google ตามรายการด้านล่างหากคุณมีเวลา ระบบไฟล์ของ Google
Google Bigtable
Google MapReduce