วิธีที่ดีในการเรียนรู้วิธีการแก้ปัญหาใน InterviewStreet [ปิด]


10

สำเนาซ้ำที่เป็นไปได้:
ฉันจะปรับให้เข้ากับคำถามท้าทายก่อนสัมภาษณ์ได้อย่างไร

InterviewStreet เป็น บริษัท ใหม่ที่ทำหน้าที่เป็นตัวกรองสำหรับ บริษัท ต่างๆในการค้นหาโปรแกรมเมอร์ที่สามารถเขียนโค้ดได้ ปัญหาของฉันคือคณิตศาสตร์ของฉันค่อนข้างอ่อนแอและฉันต้องการที่จะศึกษาแม้ว่าจะมาจากพื้นดินขึ้นเพื่อให้สามารถแก้ไขคำถามเช่นนี้ที่พบในเว็บไซต์ของพวกเขา:

Find the no of positive integral solutions for the equations (1/x) + (1/y) = 1/N! (read 1 by n factorial) Print a single integer which is the no of positive integral solutions modulo 1000007

ตอนนี้โปรดอย่าโพสต์คำตอบสำหรับคำถามนั้นมันถูกนำมาจาก InterviewStreet โดยตรงและไม่ควรโพสต์ที่นี่ มันไม่ใช่คำตอบที่ฉันต้องการในหัวข้อนี้ สิ่งที่ฉันถามคือคำถามพื้นฐานที่แฮ็กเกอร์บางคนในชุมชน SO อาจตอบได้

เราเตรียมตัวสำหรับคำถามเช่นนี้อย่างไร มีทรัพยากรอะไรให้ฉันศึกษา / เรียนรู้วิธีแก้ปัญหาแบบนี้? สิ่งนี้ครอบคลุมถึงบทเรียนเปิดของ MIT หรือไม่? Khan Academy? มีหนังสือเล่มใดบ้าง? ฉันไม่แน่ใจด้วยซ้ำว่าจะเริ่มแก้ไขปัญหาข้างต้นได้อย่างไรและฉันต้องการเรียนรู้ขั้นตอนที่ฉันสามารถทำได้


อย่าเข้าใจฉันผิด - ฉันชอบคำถามประเภทนี้มาก (ปริศนาเล็ก ๆ น้อย ๆ สำหรับวันหยุดสุดสัปดาห์) - แต่ฉันไม่คิดว่าคุณจะพบโปรแกรมที่ดีกับสิ่งเหล่านี้ได้ - คุณจะได้พบกับคณิตศาสตร์ -geek programmig) - และเราทุกคนรู้ว่าคนเหล่านั้นได้รับรหัสทำ แต่คนที่อยู่ข้างพวกเขาจะไม่สามารถอ่านรหัสของพวกเขา :) ... ต้องการที่จะรู้ว่าถ้าใครเป็นคนดีหรือไม่? นั่งลงและเขียนโปรแกรมคู่กับบุคคลนั้น 2 ชั่วโมงและคุณจะได้เรียนรู้มากกว่านั้นถ้าเขาชอบ Gardner-puzzles
Carsten

คำตอบ:


9

คำถามสัมภาษณ์มักถูกออกแบบมาเพื่อทดสอบทักษะการแก้ปัญหาของคุณโดยไม่จำเป็นต้องมีความรู้เฉพาะทาง แต่สำหรับคำถามของคุณความรู้ทางคณิตศาสตร์บางอย่างจะช่วยได้แน่นอน อย่างน้อยที่สุดคุณจะต้องเข้าใจคำจำกัดความของ 'อินทิกรัลบวก' และ 'โมดูโล' หลักสูตรเบื้องต้นในทฤษฎีจำนวนอาจจะมีประโยชน์ อาจจะเป็นหนึ่งจาก OCW

ฉันขอแนะนำProject Eulerสำหรับปัญหาตัวอย่าง - มันเป็นวิธีที่ยอดเยี่ยมในการพัฒนาความรู้ทางคณิตศาสตร์และการเขียนโปรแกรมของคุณ เลือกภาษาและเริ่มทำงานผ่านแบบฝึกหัด


6

คุณไม่สามารถเตรียมความพร้อมสำหรับปัญหาเหล่านี้ได้เพียงแค่จำหนังสือ วิธีเดียวที่จะเป็นผลดีที่การแก้ปัญหาคือการทำจำนวนมากและจำนวนมากของปัญหา ฉันแนะนำให้ทำการอัลกอริธึมและโครงสร้างข้อมูลจอง มันจะเร่งกระบวนการอย่างมีนัยสำคัญ

ฉันจำได้ไม่กี่ปีที่ผ่านมาฉันใช้เวลาตลอดฤดูร้อน (5+ ชั่วโมงต่อวัน) ในการฝึกแก้ปัญหาประเภทนี้เพื่อความสนุกสนาน

มีหลายสถานที่ที่คุณสามารถทำได้ Project Eulerเป็นจุดเริ่มต้นที่ดี UVa Online Judgeก็มีปัญหามากมายเช่นกัน


นั่นคือความมุ่งมั่น คุณพบว่ามันช่วยคุณในการเขียนโปรแกรมทั่วไปหรือไม่?
Darren Young

3
อย่างแน่นอน ฉันเข้าร่วมการแข่งขันโอลิมปิกคอมพิวเตอร์ที่ประเทศสหรัฐอเมริกาในโรงเรียนมัธยมและไปจากที่ไม่มีใครติดอันดับ 20 ในสหรัฐอเมริกา ในแง่ของการเขียนโปรแกรม "โลกแห่งความจริง" ฉันคิดว่าฉันสามารถพูดได้อย่างมั่นใจที่สุดว่าทักษะของฉันมีความคมชัดขึ้นอย่างมาก ตอนนี้ฉันไม่ได้บอกว่าทุกคนควรออกไปข้างนอกและทำสิ่งที่ฉันทำ แต่ฉันคิดว่ามันคุ้มค่าที่จะใช้เวลาในการฝึกฝนทักษะการแก้ปัญหาของคุณ คุณสามารถเรียนรู้ได้มากมายและสามารถนำไปใช้กับการพัฒนาซอฟต์แวร์ได้อย่างแน่นอน
tskuzzy

0

ปัญหานี้กำหนดให้คุณต้องรู้ทฤษฎีจำนวนพื้นฐานความคิดเฉพาะเช่นแฟคตอริ่งประกอบ, คุณสมบัติบางอย่างของจำนวนเฉพาะและความเข้าใจของคู่ที่ค่อนข้างสำคัญของตัวเลข

ปัญหาอื่น ๆ ในเว็บไซต์ต้องการความเข้าใจสัญกรณ์ O ขนาดใหญ่โครงสร้างข้อมูลอย่างง่ายอัลกอริธึมพื้นฐานเช่นการเรียงลำดับและ combinatorics ฉันผ่าน 3 ใน 5 ปัญหาและเกือบจะทำกับอันดับที่ 4 ของฉันแล้วและฉันก็ไม่ได้ใช้ความรู้เฉพาะจากหลังจากปีแรกของการเรียน CS ในวิทยาลัย ที่กล่าวว่าสิ่งเหล่านี้เป็นปัญหาที่ยาก บางคนต้องการสัญชาตญาณทางคณิตศาสตร์อย่างน่าประหลาดใจ

เพื่อเตรียมพร้อมสำหรับสิ่งเหล่านี้คุณต้องเก่งในการแก้ปัญหาทางคณิตศาสตร์ ดู Olympiad (ถ้าคุณอยู่มัธยม) หรือ Putnam Exam (ถ้าคุณอยู่ในวิทยาลัย) และทำปัญหาการฝึกฝนที่คุณพบ มันยาก แต่คุณก็จะดีขึ้น

นอกจากนี้อย่าทำคำถาม 30 ข้อ - ค้นหา Quadrant - ก่อน มันยากที่สุดในตอนนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.