อัลโกพื้นฐาน
เพื่อให้ทุกคนอ่านบทความด้านเทคนิคคุณภาพสูงได้ดีขึ้น เช่น อัลกอริธึมและพื้นฐานคอมพิวเตอร์ (รวมถึงเครือข่ายคอมพิวเตอร์ ระบบปฏิบัติการ MySQL ฯลฯ) ฉันได้จัดบทความเหล่านี้เป็น PDF ที่มีสารบัญที่มีความคมชัดสูง อย่างไรก็ตามเพื่อความสะดวกในการแก้ไขข้อผิดพลาดในภายหลัง และเพิ่มเนื้อหาใหม่ จึงมี Github นี้
ดังนั้น Github นี้จะแชร์บทความเกี่ยวกับโครงสร้างข้อมูล อัลกอริธึม พื้นฐานคอมพิวเตอร์ ประสบการณ์การเรียนรู้ของฉัน ฯลฯ ไม่ว่าคุณจะต้องเผชิญกับการสัมภาษณ์ โดยเฉพาะอย่างยิ่งการรับสมัครโรงเรียน หรือต้องการพัฒนา ทักษะภายใน ของคุณ ฉันคิดว่าบทความเหล่านี้ของฉันอาจจะ จะเป็นประโยชน์กับคุณ บทความเหล่านี้ได้รับการอัปเดตโดยทั่วไปที่นี่หลังจากได้รับคำชมอย่างสม่ำเสมอจากแพลตฟอร์มบล็อกหลัก ๆ
นอกจากนี้ หากมีประโยชน์หลังจากอ่านบทความแล้ว Shuaidi อยากจะขอให้คุณช่วยฉันและมอบดาวให้ฉันเพื่อสนองความไร้สาระของฉัน หากมีดาวมากกว่านี้ บางทีฉันอาจจะมีโอกาสจับภาพหน้าจอและ ส่งให้ Moments แกล้งทำเป็นบี ฮิฮิ
สุดท้าย หากคุณต้องการอ่าน e-book เวอร์ชัน PDF หรือ epub คุณสามารถ ไปที่บัญชีสาธารณะ WeChat ของฉัน การเขียนโปรแกรม Shuai Di Wan และตอบกลับ การฝึกความแข็งแกร่งภายในของโปรแกรมเมอร์ และคุณสามารถรับเวอร์ชัน PDF/epub ของ e-book รวบรวมโดยบทความทั้งหมดที่มีสารบัญที่มีความคมชัดสูง คุณก็สามารถสแกนและติดตามได้
สารบัญ
- อัลกอริธึมการเรียนรู้
- การแบ่งปันประสบการณ์อัลกอริทึมการเรียนรู้
- เรียนรู้การเรียกซ้ำ
- เรียนรู้การเขียนโปรแกรมแบบไดนามิก
- เรียนรู้การค้นหาแบบไบนารี
- สร้างฉากสัมภาษณ์อัลกอริทึมการสรรหาบุคลากรในวิทยาเขตขึ้นมาใหม่
- เรียนรู้อัลกอริธึมการจับคู่สตริง
- ต้องเรียนรู้การคิดและทักษะอัลกอริทึม
- ต้องเรียนรู้อัลกอริธึมการเรียงลำดับ
- รับต้นไม้ไบนารี
- รับรายการที่เชื่อมโยง
- เรียนรู้โครงสร้างข้อมูล
- เรียนรู้เครือข่ายคอมพิวเตอร์
- สรุปประสบการณ์ที่เขียนขึ้นสำหรับนักศึกษาปัจจุบัน
- ประสบการณ์ส่วนตัวและการสะท้อนกลับ
- เรียนรู้ระบบปฏิบัติการ
- MySQL
- ชวา
- คอมไพล์
- คำแนะนำหนังสือคุณภาพสูงที่ฉันได้อ่าน
- การติดตามผล
- ชื่นชม
อัลกอริธึมการเรียนรู้
การแบ่งปันประสบการณ์อัลกอริทึมการเรียนรู้
- โปรแกรมเมอร์ต้องเชี่ยวชาญอัลกอริธึมอะไรบ้าง?
- ในฐานะมือใหม่ ฉันจะเรียนรู้อัลกอริทึมได้อย่างไร
- หลังจากตอบคำถาม leetcode ครบ 500 ข้อ จะผ่านการทดสอบข้อเขียน/สัมภาษณ์ปลอดภัยหรือไม่
เรียนรู้การเรียกซ้ำ
- ทำไมคุณไม่สามารถเรียนรู้การเรียกซ้ำได้? บอกลาการเรียกซ้ำและพูดคุยเกี่ยวกับประสบการณ์บางอย่างของฉัน
- การฝึกอบรมที่ 1: ค้นหาค่ามัธยฐานบนในอาร์เรย์ที่เรียงลำดับ 2 ชุดที่มีความยาวเท่ากัน
- การฝึกอบรม 2: ค้นหาทศนิยม K ของอาร์เรย์เรียงลำดับสองตัว
- การฝึกอบรม 3: ค้นหาค่ามัธยฐานของอาร์เรย์เรียงลำดับสองตัว (เกี่ยวกับความสำคัญของการเปลี่ยนแปลงทางความคิด)
เรียนรู้การเขียนโปรแกรมแบบไดนามิก
- การเขียนโปรแกรมแบบไดนามิกยากหรือไม่? หลังจากตอบคำถาม 40 ข้อใน DP ฉันสรุปกิจวัตรเหล่านี้ได้!
- การเพิ่มประสิทธิภาพของการเขียนโปรแกรมแบบไดนามิก
- การฝึกอบรมที่ 1: คำอธิบายโดยละเอียดเกี่ยวกับปัญหาอัลกอริทึมการเขียนโปรแกรมไดนามิกสามมิติ
- การฝึกอบรม 2: คำอธิบายโดยละเอียดของคำถาม leetcode221: กำลังสองสูงสุด
เรียนรู้การค้นหาแบบไบนารี
- คุณแน่ใจหรือไม่ว่าคุณสามารถค้นหาแบบไบนารี่ได้? สามารถใช้ในการออกแบบกลโกงในชีวิตได้หรือไม่?
- คำถามอัลกอริธึมที่ดูเหมือนง่ายสองข้อ
- สรุปคำถามแบ่งขั้ว
สร้างฉากสัมภาษณ์อัลกอริทึมการสรรหาบุคลากรในวิทยาเขตขึ้นมาใหม่
- จำคำถามสัมภาษณ์อัลกอริทึมของ ByteDance: การกลับรายการลิงก์ที่ผิดรูป
- จำการสัมภาษณ์ด้วยอัลกอริธึมที่ทำลายด้วยมือ: ผู้สัมภาษณ์ของ ByteDance ตีฉันสี่ครั้งติดต่อกัน
- คำถามทดสอบข้อเขียนของอาลีบาบา: ฉันจะแก้ไขปัญหาแหวนโจเซฟด้วยโค้ดเพียงบรรทัดเดียวได้อย่างไร
- จำบทสัมภาษณ์กับอาลีบาบา: บทสัมภาษณ์มุ่งเน้นไปที่การออกแบบอัลกอริทึมแคช LRU
- การใช้คำนำหน้าจะเริ่มต้นด้วยคำถามทดสอบข้อเขียนของ NetEase
- การละเมิดการสัมภาษณ์: จำคำถามสัมภาษณ์อัลกอริทึมของ shopee: ทางออกที่ดีที่สุดของสแต็กขั้นต่ำ
- การละเมิดการสัมภาษณ์: การกรองคำที่ละเอียดอ่อนในเกมมีการใช้งานอย่างไร
- ค้นหาจำนวนเต็มที่พบบ่อยที่สุดตั้งแต่ 2 พันล้าน 4 พันล้าน 8 พันล้านโดยใช้หน่วยความจำเพียง 2GB
เรียนรู้อัลกอริธึมการจับคู่สตริง
- สตริงกราฟิกที่ตรงกับอัลกอริทึม KMP
- การจับคู่สตริงอัลกอริธึม Boyer-Moore: ฟังก์ชั่นการค้นหานำไปใช้ในโปรแกรมแก้ไขข้อความอย่างไร
ต้องเรียนรู้การคิดและทักษะอัลกอริทึม
- มุ่งมั่นสู่จุดสูงสุด: ฉันจะเปลี่ยนคำถามอัลกอริทึมระดับง่ายให้เป็นคำถามระดับยากได้อย่างไร
- แบ่งปันปัญหาอัลกอริทึมด้วยวิธีแก้ปัญหาที่ชาญฉลาด
- แฟกทอเรียลเป็นเรื่องง่ายเหรอ? พูดตามตรง คุณอาจไม่เข้าใจคำถามสัมภาษณ์ที่เกี่ยวข้องกับแฟคทอเรียลเหล่านี้!
- ผู้สัมภาษณ์ โปรดอย่าถามคำถามอัลกอริทึมที่เรียบง่ายแต่ยากเช่นนี้กับฉันเลย
- สุดยอด! โค้ดบรรทัดเดียวสามารถแก้ปัญหาอัลกอริทึมมากมายที่รบกวนจิตใจฉันมาเป็นเวลานานได้
- Shuaidi ได้สรุปเทคนิคการแก้ปัญหาอัลกอริธึมความถี่สูงนี้ไว้ให้คุณเพื่อช่วยให้คุณแก้ปัญหาได้เร็วขึ้น!
- เทคนิคในโครงสร้างข้อมูลอัลกอริทึมมีอะไรบ้าง?
- คู่มือแกล้งทำเป็นว่าเชี่ยวชาญเล็กน้อย
- ค้นหาจำนวนเต็มที่หายไป
ต้องเรียนรู้อัลกอริธึมการเรียงลำดับ
- การ์ตูน: โปรดอย่าถามฉันเกี่ยวกับการเรียงลำดับอย่างรวดเร็วอีก
- การ์ตูน: เหตุใดการเรียงลำดับความซับซ้อนของ O(n) จึงไม่เร็วเท่ากับการเรียงลำดับอย่างรวดเร็ว
- การ์ตูน: การเรียงลำดับภายนอก: จะเรียงลำดับจำนวนเต็ม 2 พันล้านโดยใช้หน่วยความจำ 2GB ได้อย่างไร (อันที่จริงนี่เป็นคำถามสัมภาษณ์ทั่วไปด้วย)
- หยุดเลื่อน โปรแกรมเมอร์ต้องเรียนรู้อัลกอริธึมการเรียงลำดับแบบคลาสสิกสิบอันดับแรก เพียงอ่านบทความนี้
รับต้นไม้ไบนารี
- สั่งซื้อการสำรวจเส้นทางไบนารีทรีล่วงหน้า (เวอร์ชันแบบไม่เรียกซ้ำ)
- การข้ามลำดับของต้นไม้ไบนารี (เวอร์ชันที่ไม่เรียกซ้ำ)
- การแวะผ่านลำดับหลังของต้นไม้ไบนารี (เวอร์ชันที่ไม่เรียกซ้ำ)
- พิมพ์ไบนารีทรีจากบนลงล่าง
- การก่อสร้างต้นไม้ไบนารี
- กระจกเงาของต้นไม้ไบนารี
- โครงสร้างย่อยของต้นไม้ไบนารี
- ลำดับการสำรวจเส้นทางภายหลังของแผนผังการค้นหาแบบไบนารี
- สร้างต้นไม้ไบนารีขึ้นมาใหม่
รับรายการที่เชื่อมโยง
- การฝึกอบรมรายการลิงก์ 1: ลบโหนด Kth ของรายการลิงก์เดี่ยว
- การฝึกอบรมรายการลิงก์ 2: ลบโหนดกลางของรายการลิงก์เดี่ยว
- การฝึกอบรมรายการลิงก์ 3: วิธีย้อนกลับรายการลิงก์เดี่ยวอย่างสวยงาม
- การฝึกอบรมรายการลิงก์ที่ 4: ปัญหาโจเซฟเกี่ยวกับรายการลิงก์เดี่ยวแบบวงกลม
- การฝึกอบรมรายการเชื่อมโยง 5: สามวิธีจะช่วยให้คุณตัดสินรายการเชื่อมโยงแบบ Palindromic ได้อย่างสวยงาม
- การฝึกอบรมรายการเชื่อมโยงที่ 6: แบ่งรายการเชื่อมโยงทางเดียวตามค่าที่กำหนดเป็นรูปแบบเล็กทางด้านซ้าย ตรงกลางเท่ากัน และขนาดใหญ่ทางด้านขวา
- การฝึกอบรมรายการเชื่อมโยง 7: คัดลอกรายการเชื่อมโยงที่มีโหนดตัวชี้แบบสุ่ม
- การฝึกอบรมรายการลิงก์ 8: ย้อนกลับลำดับระหว่างแต่ละโหนด K ของรายการลิงก์เดี่ยว
- การฝึกอบรมรายการลิงก์ 9: แปลงแผนผังไบนารีการค้นหาให้เป็นรายการลิงก์ทวีคูณ
เรียนรู้โครงสร้างข้อมูล
- ไบนารีฮีปคืออะไร?
- การเรียงลำดับฮีปคืออะไร?
- การ์ตูน: ต้นไม้ avl คืออะไร?
- คำถามสัมภาษณ์ของ Tencent: ด้วยต้นไม้การค้นหาแบบไบนารี ทำไมต้นไม้ที่สมดุลจึงต้องการต้นไม้สีแดงดำ
- การสัมภาษณ์ความถี่สูง: B-tree คืออะไร? เหตุใดดัชนีไฟล์จึงใช้ B-trees แทนแผนผังการค้นหาแบบไบนารี
- ในอนาคต หากผู้สัมภาษณ์ถามคุณเกี่ยวกับตารางกระโดด ก็แค่โยนบทความนี้ให้เขา
เรียนรู้เครือข่ายคอมพิวเตอร์
- ทำความเข้าใจว่าคอมพิวเตอร์เครื่องหนึ่งส่งข้อมูลไปยังคอมพิวเตอร์เครื่องอื่นอย่างไรในบทความเดียว
- การพูดคุยแบบสุ่ม: https คืออะไร นี่ควรเป็นบทความที่ดีที่สุดบนอินเทอร์เน็ตเกี่ยวกับ https
- ภาพประกอบ: โฮสต์ที่เป็นคนแปลกหน้าโดยสิ้นเชิงสามารถส่งข้อมูลที่ถูกต้องเป็นเวลาสองวันได้อย่างไร
- ลายเซ็นดิจิทัลคืออะไร
- การควบคุมความแออัดคืออะไร?
- การควบคุมการไหลของ TCP คืออะไร
- อัลกอริธึมการกำหนดเส้นทางการออกอากาศคืออะไร? จะแก้ไขพายุการออกอากาศได้อย่างไร?
- ผู้สัมภาษณ์ต้องการทดสอบเราอย่างไรเกี่ยวกับการจับมือสามทางและคลื่นสี่ทาง?
- IP ของคอมพิวเตอร์มาจากไหน ฉันยังไม่ได้กำหนดค่ามัน
- ความแตกต่างระหว่างการสลับวงจรและการสลับแพ็กเก็ต
สรุปประสบการณ์ที่เขียนขึ้นสำหรับนักศึกษาปัจจุบัน
- ฉันเรียนการเขียนโปรแกรมมาสี่ปีแล้ว และขอแนะนำเครื่องมือการเรียนรู้ เว็บไซต์ และสื่อการสอนคุณภาพสูงเหล่านี้ให้กับคุณ
- หลังจากคิดอยู่นาน นี่คือเส้นทางการเรียนรู้ที่เหมาะสำหรับบุคคลทั่วไป
- การรวบรวมหลัก: ความรู้พื้นฐานเกี่ยวกับคอมพิวเตอร์ที่จะทำให้คุณเริ่มต้น: ต้องเรียนรู้อะไรและจะเรียนรู้อย่างไร
- ฉันล้มเหลวในการสัมภาษณ์สองครั้งกับ Tencent ในการรับสมัครช่วงฤดูใบไม้ผลิ ให้ฉันแบ่งปันประสบการณ์การสัมภาษณ์ที่ล้มเหลว + ไร้สาระ
- หลังจากการรับสมัครช่วงฤดูใบไม้ร่วงเป็นเวลาสองเดือน เรามาพูดถึงประเด็นความรู้ที่สำคัญบางประการในการรับสมัครช่วงฤดูใบไม้ผลิและฤดูใบไม้ร่วงกันดีกว่า
- จำเป็นต้องพูดถึงการรับสมัครช่วงฤดูใบไม้ผลิที่กำลังจะมาถึง (ประสบการณ์ + ความสำคัญ + วิธีเตรียมตัว)
- บอกฉันเกี่ยวกับโครงการที่คุณทำงานในช่วง Spring และ Autumn Recruitment และแนะนำโครงการบางส่วน + วิดีโอสัมภาษณ์
ประสบการณ์ส่วนตัวและการสะท้อนกลับ
- การรับสมัครช่วงฤดูใบไม้ร่วงสิ้นสุดลงแล้ว มันเป็นเพียงสามปีในวิทยาลัยธรรมดาสำหรับฉัน
- ในช่วง 15 เดือนที่ผ่านมาของการเขียนบัญชีสาธารณะ ฉันได้เรียนรู้และได้รับอะไรบ้างระหว่างทาง
- 2019 ของฉัน
- ในรอบกว่าหนึ่งปีนับตั้งแต่ฉันเริ่มเขียนบทความเกี่ยวกับบัญชีสาธารณะ ฉันรู้สึกถูกหลอก ถูกบล็อก และถูกชมเชย
- บทความต้นฉบับฉบับแรกในปี 2020: ฉันจะทำให้ตัวเองดีขึ้นได้อย่างไร
- ให้ฉันพูดถึงชีวิตประจำวันของฉัน การเรียน และการคิด
เรียนรู้ระบบปฏิบัติการ
บทความในส่วนนี้ค่อนข้างกระจัดกระจายเล็กน้อย และจะค่อยๆ เพิ่มในภายหลัง ดังนั้นโปรดคอยติดตาม
- จำการสัมภาษณ์: วิธีการสื่อสารระหว่างกระบวนการคืออะไร? จะสื่อสารอย่างไร?
MySQL
- บทสัมภาษณ์ของ Tencent: อะไรคือสาเหตุที่คำสั่ง SQL ทำงานช้า?
- เคล็ดลับการสัมภาษณ์: ดัชนี MySQL ที่เกี่ยวข้อง
- ปล่อยฉันไปเถอะ เคล็ดลับเล็กๆ น้อยๆ ทั้งสองนี้ไม่เพียงแต่ช่วยให้คำสั่ง SQL ของฉันหลีกเลี่ยงข้อผิดพลาด แต่ยังปรับปรุงให้ดีขึ้นถึง 1,000 เท่าอีกด้วย
ชวา
- ความปลอดภัยของด้าย (ตอนที่ 1): ทำความเข้าใจคำสำคัญที่มีความผันผวนอย่างถี่ถ้วน
- ความปลอดภัยของเกลียว (ตอนที่ 2): ทำความเข้าใจการซิงโครไนซ์อย่างละเอียด (ตั้งแต่ล็อคแบบลำเอียงจนถึงล็อคแบบหนา)
- ในประโยคเดียว เรียนรู้ล็อคต่างๆ เช่น ล็อคแบบหนา ล็อคแบบหมุน ล็อคน้ำหนักเบา ล็อคแบบเอนเอียง ล็อคในแง่ร้าย และล็อคในแง่ดี
- หัวใจสำคัญของการทำงานพร้อมกัน: CAS คืออะไร Java8 ปรับ CAS ให้เหมาะสมได้อย่างไร
- คุณไม่กล้าที่จะเรียนรู้คลาสการซิงโครไนซ์ที่สำคัญที่สุดในแพ็คเกจ Java concurrency หรือไม่?
- โปรดสร้างมาตรฐานให้กับรูปแบบการเขียนโค้ดของคุณ
คอมไพล์
- ฉันเพิ่งเรียนรู้ Git ตั้งแต่เริ่มต้นและสรุปคู่มือคำสั่ง Git นี้
คำแนะนำหนังสือคุณภาพสูงที่ฉันได้อ่าน
- หนังสือคุณภาพสูงที่แนะนำที่ฉันได้อ่านในช่วงสี่ปีในวิทยาลัย
- หนังสือเล่มไหนน่าอ่านเกี่ยวกับอัลกอริธึมและพื้นฐานคอมพิวเตอร์?
การติดตามผล
ฉันหวังว่า e-book เล่มนี้จะเป็นประโยชน์กับคุณ หากทุกคนตอบรับดี ฉันจะเพิ่มเนื้อหาต่อไปในภายหลัง นี่เป็นเวอร์ชันเบื้องต้นและอาจมีข้อบกพร่องหลายประการ เช่น การพิมพ์ผิดและประเด็นความรู้บางอย่าง หากคุณพบ หากคุณมีคำถามใด ๆ คุณสามารถค้นหาฉันได้ผ่านบัญชีอย่างเป็นทางการของฉัน คุณสามารถฝากข้อความไว้ในบัญชีอย่างเป็นทางการของฉันหรือเพิ่ม WeChat ส่วนตัวของฉันได้โดยตรง
ชื่นชม
การจัดระเบียบ e-book ไม่ใช่เรื่องง่าย หากคุณพบว่ามีประโยชน์และต้องการให้รางวัลแก่ผู้เขียน คุณสามารถให้รางวัลฉันผ่านรหัสการชำระเงินนี้ ฉันสามารถใช้สถานะรางวัลนี้ได้ หวังว่าทุกคนจะแสดงความคิดเห็นใน e-book เล่มนี้นะ อิอิ
หมายเหตุ: คุณสามารถจดชื่อเล่นของคุณเมื่อชำระเงิน อาจเป็น CSDN, WeChat, GitHub เป็นต้น