พิจารณา meta-point: ผู้สัมภาษณ์ต้องการหาอะไร
คำถามมหึมาเช่นนี้ไม่ต้องการให้คุณเสียเวลาในการใช้อัลกอริทึมแบบ PageRank หรือวิธีการจัดทำดัชนีแบบกระจาย ให้เน้นไปที่ภาพที่สมบูรณ์ของสิ่งที่จะถ่ายทำแทน ดูเหมือนคุณจะรู้แล้วว่าชิ้นใหญ่ ๆ ทั้งหมด (BigTable, PageRank, Map / Reduce) ดังนั้นคำถามคือคุณจะโยงพวกเขาเข้าด้วยกันได้อย่างไร?
นี่คือแทงของฉัน
ขั้นตอนที่ 1: การจัดทำดัชนีโครงสร้างพื้นฐาน (ใช้เวลาอธิบาย 5 นาที)
ขั้นตอนแรกของการนำ Google มาใช้ (หรือเครื่องมือค้นหาใด ๆ ) คือการสร้างตัวทำดัชนี นี่คือซอฟต์แวร์ส่วนหนึ่งที่รวบรวมข้อมูลคลังข้อมูลและสร้างผลลัพธ์ในโครงสร้างข้อมูลที่มีประสิทธิภาพมากขึ้นสำหรับการอ่าน
เมื่อต้องการใช้สิ่งนี้ให้พิจารณาสองส่วนคือโปรแกรมรวบรวมข้อมูลและตัวทำดัชนี
งานของซอฟต์แวร์รวบรวมข้อมูลเว็บคือการสไปเดอร์การเชื่อมโยงเว็บเพจและเทลงในชุด ขั้นตอนที่สำคัญที่สุดที่นี่คือการหลีกเลี่ยงการวนซ้ำไม่สิ้นสุดหรือเนื้อหาที่สร้างขึ้นอย่างไม่สิ้นสุด วางแต่ละลิงก์เหล่านี้ในไฟล์ข้อความขนาดใหญ่ (ตอนนี้)
ประการที่สองตัวสร้างดัชนีจะทำงานโดยเป็นส่วนหนึ่งของแผนที่ / ลดงาน (แมปฟังก์ชั่นกับทุกรายการในอินพุตจากนั้นลดผลลัพธ์ให้เป็น 'สิ่ง' เดียว) ตัวสร้างดัชนีจะใช้เว็บลิงค์เดียวดึงเว็บไซต์และแปลงเป็นไฟล์ดัชนี (กล่าวถึงต่อไป) ขั้นตอนการลดลงจะเป็นการรวมไฟล์ดัชนีทั้งหมดเหล่านี้ไว้ในหน่วยเดียว (แทนที่จะเป็นไฟล์เปล่าหลายล้านไฟล์) เนื่องจากขั้นตอนการทำดัชนีสามารถทำคู่ขนานกันได้คุณสามารถทำแผนที่นี้ / ลดงานข้ามศูนย์ข้อมูลขนาดใหญ่โดยพลการ
ขั้นตอนที่ 2: ความเฉพาะของอัลกอริทึมการทำดัชนี (ใช้เวลาอธิบาย 10 นาที)
เมื่อคุณระบุว่าคุณจะประมวลผลหน้าเว็บได้อย่างไรส่วนถัดไปคือการอธิบายว่าคุณสามารถคำนวณผลลัพธ์ที่มีความหมายได้อย่างไร คำตอบสั้น ๆ ที่นี่คือ 'แผนที่มากขึ้น / ลดน้อยลง' แต่ให้พิจารณาสิ่งต่าง ๆ ที่คุณสามารถทำได้:
- สำหรับแต่ละเว็บไซต์ให้นับจำนวนลิงก์ที่เข้ามา (หน้าที่เชื่อมโยงไปยังหน้าเว็บที่เชื่อมโยงไปถึงมากขึ้นควรจะ 'ดีกว่า')
- สำหรับแต่ละเว็บไซต์ให้ดูที่การนำเสนอลิงก์ (ลิงก์ใน <h1> หรือ <b> ควรสำคัญกว่าลิงก์ที่ฝังอยู่ใน <h3>)
- สำหรับแต่ละเว็บไซต์ให้ดูที่จำนวนลิงก์ขาออก (ไม่มีใครชอบสแปมเมอร์)
- สำหรับแต่ละเว็บไซต์ให้ดูที่ประเภทของคำที่ใช้ ตัวอย่างเช่น 'hash' และ 'table' อาจหมายถึงเว็บไซต์นั้นเกี่ยวข้องกับวิทยาการคอมพิวเตอร์ 'แฮช' และ 'บราวนี่' ในทางกลับกันนั่นก็หมายความว่าไซต์นั้นเกี่ยวกับบางสิ่งที่แตกต่างออกไป
น่าเสียดายที่ฉันยังไม่รู้จักวิธีการวิเคราะห์และประมวลผลข้อมูลที่เป็นประโยชน์มากพอ แต่ความคิดทั่วไปเป็นวิธีการขยายขีดความสามารถในการวิเคราะห์ข้อมูลของคุณ
ขั้นตอนที่ 3: การแสดงผลลัพธ์ (ใช้เวลาอธิบาย 10 นาที)
ขั้นตอนสุดท้ายคือการแสดงผลลัพธ์ หวังว่าคุณได้แบ่งปันข้อมูลเชิงลึกที่น่าสนใจเกี่ยวกับวิธีการวิเคราะห์ข้อมูลหน้าเว็บ แต่คำถามคือคุณจะค้นหาได้อย่างไร โดยทั่วไปแล้ว 10% ของคำค้นหาของ Google ในแต่ละวันไม่เคยเห็นมาก่อน ซึ่งหมายความว่าคุณไม่สามารถแคชผลลัพธ์ก่อนหน้า
คุณไม่สามารถ 'ค้นหา' จากดัชนีเว็บของคุณเดียวคุณจะลองทำอะไร คุณจะดูดัชนีต่างๆอย่างไร (อาจรวมผลลัพธ์ - คำหลัก 'stackoverflow' อาจมีดัชนีสูงหลายรายการ)
นอกจากนี้คุณจะค้นหามันอย่างไร? สิ่งที่ประเภทของวิธีการที่คุณสามารถใช้สำหรับอ่านข้อมูลจากขนาดใหญ่ปริมาณของข้อมูลได้อย่างรวดเร็ว? (อย่าลังเลที่จะตั้งชื่อฐานข้อมูล NoSQL ที่คุณชื่นชอบที่นี่และ / หรือดูว่า BigTable ของ Google เป็นอย่างไร) แม้ว่าคุณจะมีดัชนีที่ยอดเยี่ยมที่มีความแม่นยำสูงคุณต้องการวิธีในการค้นหาข้อมูลอย่างรวดเร็ว (เช่นค้นหาหมายเลขอันดับของ 'stackoverflow.com' ภายในไฟล์ 200GB)
ปัญหาสุ่ม (เวลาที่เหลือ)
เมื่อคุณครอบคลุม 'กระดูก' ของเครื่องมือค้นหาของคุณแล้วอย่าลังเลที่จะเจาะรูในหัวข้อใด ๆ ที่คุณมีความรู้เป็นพิเศษ
- ประสิทธิภาพของส่วนหน้าของเว็บไซต์
- การจัดการศูนย์ข้อมูลสำหรับแผนที่ / ลดงานของคุณ
- การปรับปรุงการทดสอบเครื่องมือค้นหา A / B
- การรวมปริมาณการค้นหา / แนวโน้มก่อนหน้าในการจัดทำดัชนี (เช่นคาดว่าเซิร์ฟเวอร์ส่วนหน้าจะโหลดได้ถึง 9-5 และจะตายในช่วงต้น AM)
เห็นได้ชัดว่ามีเนื้อหามากกว่า 15 นาทีที่จะพูดถึงที่นี่ แต่หวังว่ามันจะเพียงพอสำหรับคุณที่จะเริ่มต้น