เรียนรู้การเขียนโปรแกรมย้อนหลังหรือ“ ดังนั้นฉันจึงล้มเหลวในการทดสอบ FizzBuzz ตอนนี้เป็นอย่างไร” [ปิด]


94

พื้นหลังเล็กน้อย

วันนี้ฉันอายุ 28 และฉันไม่เคยได้รับการฝึกอบรมอย่างเป็นทางการในการพัฒนาซอฟต์แวร์ แต่ฉันมีวุฒิการศึกษาระดับสูงกว่าปริญญาตรีสาขาการประชาสัมพันธ์และบริหารธุรกิจมหาบัณฑิตสาขาบริหารธุรกิจที่เน้นการบริหารโครงการ ฉันเคยทำงานในสาขาเหล่านั้นมาแล้วประมาณ 6 ปีและเมื่อ 2,5 ปีก่อนฉันลาออกจากงานและตัดสินใจเปลี่ยนทิศทาง

หลังจากผ่านไปหนึ่งเดือนฉันก็ตัดสินใจที่จะเริ่มพัฒนาเว็บไซต์เล็ก ๆ ในเวิร์ดเพรส ฉันเรียนรู้วิธีการของฉันด้วยตนเองและวันนี้ฉันสามารถพูดได้ว่าฉันใช้รูปแบบการพัฒนาอาชีพและประสบความสำเร็จต่ำต้อยและปลั๊กอินตั้งแต่ต้นสำหรับลูกค้าของฉัน - หน่วยงานส่วนใหญ่จ้างงาน dev บางส่วนสำหรับเว็บไซต์ขนาดกลาง / ใหญ่

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

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

ขณะนี้ฉันใช้เวลาว่างศึกษาJava สำหรับโปรแกรมเมอร์ (เพื่อให้เข้าใจภาษาที่ทุกคนพูดว่าเป็นเรื่องยาก / เรียกร้อง) อ่านข้อความที่ตัดตอนมาของCode Complete (เพื่อให้ได้แนวปฏิบัติที่ดีที่สุด) และCode: ภาษาที่ซ่อนอยู่ของคอมพิวเตอร์ ฮาร์ดแวร์และซอฟต์แวร์ (เพื่อให้เข้าใจการทำงานภายในของคอมพิวเตอร์)

TL; DR

ดังนั้นสถานการณ์ปัจจุบันของฉันคือ: โดยทั่วไปฉันสามารถเขียนระบบที่สมบูรณ์ใน PHP (ด้วยความช่วยเหลือของ Google และหนังสือสองสามเล่ม) การรวม Ajax, SQL และ whatnot และอาจช้ากว่า dev ที่มีประสบการณ์เล็กน้อย เนื่องจากการวิจัยทั้งหมดที่เกี่ยวข้อง

แต่ฉันถูกจับเมื่อวานนี้พยายามหาทางออก (ไม่ใช่ Google) สำหรับการทดสอบ FizzBuzz เพราะฉันไม่ได้มีผู้จำif($n1 % $n2 == 0) วิธี โมดูลัสของการจำ

คุณจะแนะนำอะไรเป็นวิธีที่ดีในการแก้ปัญหานี้? ฉันควรเรียนวิชาอะไร / หนังสือเล่มไหนที่จะทำให้ฉันแก้ปัญหาได้เร็วขึ้นและอาจมากกว่า "ในแบบของโปรแกรมเมอร์"

แก้ไข - ดูเหมือนว่ามีความสับสนเกี่ยวกับสิ่งที่ฉันไม่รู้ว่าจะแก้ปัญหา FizzBuzz

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

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

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


63
เมื่อฉันอ่านสิ่งนี้: I'm basically capable of writing any complete system in PHP (with the help of Google and a few books)และรวมสิ่งนี้เข้ากับสิ่งที่คุณไม่รู้if($n1 % $n2 == 0)ฉันสงสัยว่าคุณได้รับสิ่งที่เขียนด้วย PHP ฉันคิดว่าสิ่งส่วนใหญ่ที่คุณทำได้นอกเหนือจากการคำนวณแบบโมดูโล คุณช่วยให้ลึกเข้าไปในสิ่งที่คุณคิดว่าคุณสามารถทำได้?
phant0m

10
ฉันยังเป็นโปรแกรมเมอร์ที่สอนตัวเอง .. อยู่ที่นี่นานกว่า 10 ปีแล้วทุกเว็บตลอดเวลา .. ตอนนั้นไม่มีการพัฒนาเว็บไซต์ ... ฉันคิดว่ามีประโยชน์ในการเรียนรู้ด้วยตัวเอง คุณจะต้องการเรียนรู้เกี่ยวกับหลักการ OO พื้นฐานและรูปแบบการออกแบบ พวกเขาจะช่วยคุณได้มากเมื่อมีปัญหาอยู่ข้างหลังหัวของคุณเมื่อมีปัญหาในการโจมตี .. ฉันมักจะพบว่าฉันไม่มีคำศัพท์ที่คนอื่นมีเสมอ แต่ถ้าคุณสนุกกับการเขียนโปรแกรมและสนุกกับการเขียนวิธีแก้ปัญหา คุณจะสามารถกำหนดรหัสของคุณในสิ่งที่คุณต้องการได้
hanzolo

56
ที่เกี่ยวข้องกับstuck b/c I didn't memorize %ปัญหามันเป็นเรื่องน่าสังเกตว่ามีวิธีอื่นในการทำเช่นนี้: (สมมติว่า $ n2! = 0) if (is_int ($n1 / $n2))หรือการif (($n1 / $n2) == (int) ($n1 / $n2))รู้คำหลักเป็นสิ่งหนึ่งและรู้วิธีแสดงความคิดพื้นฐานในกรณีที่ไม่มีโซลูชันในตัวคือ อื่น
grossvogel

18
@grossvogel แน่นอน! หนึ่งในเหตุผลที่ผู้คนชอบ Fizzbuzz คือมีหลายวิธีในการแก้ไข ไม่ใช่แค่กลอุบายที่จะดูว่าคุณรู้จักผู้ประกอบการโมดูลัสหรือไม่ ทักษะการเขียนโปรแกรมที่สำคัญอย่างหนึ่งคือความสามารถในการแปลปัญหาจากแบบฟอร์มที่ระบุไว้ในแบบฟอร์มที่ดีที่สุดสำหรับความรู้ / เครื่องมือ / ทรัพยากร / อื่น ๆ ของคุณ
ตุลาคม

18
การไม่ทราบว่าตัวดำเนินการโมดูลัสนั้นไม่ใช่เหตุผลที่ทำให้ FizzBuzz ล้มเหลว เมื่อคุณพบบางสิ่งที่ขาดหายไปคุณจะต้องสามารถแก้ไขมันได้
Loren Pechtel

คำตอบ:


144

ในกรณีของคุณในขณะที่คุณเรียนรู้ด้วยตนเองและมีสิ่งที่ดูเหมือนจะเป็นวิธีการเรียนรู้ที่ดีมีสุขภาพดีและไม่มี BS ยังมีคำแนะนำ ...

ฝึกฝนบ่อยๆทำให้เก่ง

ฉันคิดว่าคุณควรดำน้ำในแบบฝึกหัด progamming เช่น:

แม้แต่คว้าคำถามสอบที่ผ่านมาของมหาวิทยาลัยที่มีชื่อเสียงรอบ ๆ ตัวคุณหรือการแข่งขันเขียนโปรแกรมท้องถิ่น (หรือระยะไกล) ตัวอย่างเช่นเรามีหนึ่งที่ดีในประเทศฝรั่งเศสสำหรับโปรแกรมเมอร์ระดับมัธยมปลายที่เรียกว่าProloginและมันให้ชุดของปริศนาหัวรอยขีดข่วนที่ดีทุกปี (อาจเป็นภาษาฝรั่งเศสเท่านั้นขออภัย แต่นั่นเป็นสิ่งที่ฉันหมายถึง )

สำหรับข้อมูลเพิ่มเติม: ฉันจะค้นหาปริศนาและความท้าทายในการเขียนโปรแกรมได้ที่ไหน

หนังสือคลาสสิกและการอ้างอิง

เราสามารถแนะนำรายการหนังสือที่น่าทึ่ง มานานแต่ฉันขอบอกว่าคำตอบของเซนคือไม่มีวิธีที่ถูกต้องในการตรัสรู้

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

สำหรับข้อมูลเพิ่มเติม:

ผลักดันข้อ จำกัด

นอกจากนี้ให้มองหาวัสดุที่ทำให้เกิดรอยขีดข่วนเช่น:

ไม่จำเป็นต้องเป็นตัวอย่างของสิ่งที่ต้องทำทุกวันนี้ แต่ควรลองคิดดูว่ามีอะไรเกิดขึ้นในนั้น

ระบบเพียร์เป็นแรงจูงใจ

คุณอาจต้องการที่จะแฝงตัว (และมีส่วนร่วมใน) ชุมชนต่อไปนี้เพื่อพัฒนาทักษะของคุณเพิ่มขึ้นโดยการเผชิญหน้ากับผู้อื่น

  • P.SEตามธรรมชาติ
  • StackOverflow ,
  • CodeGolf.SE ,
  • CodeReview.SE ,
  • หรือแม้แต่คนบ้าๆที่CS.SE (หรือคนพิเศษเช่นCrypto.SE )
  • หรือไซต์ชุมชน SE หรืออื่น ๆ อีกมากมาย

การศึกษานอกเวลา

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

ต้องขอบคุณความพยายามของMIT OpenCourseWareดั้งเดิมทำให้ตอนนี้มีมหาวิทยาลัยมากมายตามมาด้วยชุดสูทและคุณสามารถหาสื่อการเรียนการสอนระดับมหาวิทยาลัยได้ฟรีมากมาย ไม่ใช่เรื่องง่ายที่จะนำทางและอ่านด้วยตัวเอง แต่ก็ทำได้ดี ในการเริ่มต้นจากพื้นดินและขึ้นไปสูงพิจารณาให้ดูที่Khan Academyด้วย

บางคนไปไกลกว่านั้นและเสนอหลักสูตรออนไลน์ของจริงฟรีที่ซึ่งคุณสามารถเข้าถึงเนื้อหาของหลักสูตรได้เช่นเดียวกัน แต่พวกเขายังมีการบรรยายและการประเมินตนเองเป็นประจำ ยกตัวอย่างเช่นเยี่ยมชมCourseraหรือUdacity

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

หากคุณต้องการบางสิ่งที่มอบประสบการณ์ที่ใกล้ชิดกับมหาวิทยาลัย "ของจริง" คุณสามารถพิจารณามหาวิทยาลัยในระยะไกลซึ่งช่วยให้คุณทำงานนอกเวลา แต่ต้องการให้คุณทำตามจังหวะและมีการประเมินตนเองและสิ้นสุด การทดสอบปี (บางครั้งในสถานที่) เช่นเดียวกับOpenUniversityและตัวแปรระหว่างประเทศ

ความหลงใหลทำให้คุณก้าวต่อไป

  • ค้นหาโครงการสัตว์เลี้ยง:สร้างของคุณเองหรือเข้าร่วมหนึ่งหรือมากกว่าหนึ่งโครงการซอฟต์แวร์ที่มีอยู่และมีส่วนร่วม
  • รหัสรหัสรหัส แล้วรหัสเพิ่มเติม

(และได้ลูกตามากพอที่จะดูรหัสของคุณเพื่อวิพากษ์วิจารณ์คุณและมุมมองที่แตกต่างกัน)

คนฝรั่งเศสพูดว่า:

C'est en forgeant que l'on devient forgeron

ทำสิ่งที่คุณทำอยู่เรื่อย ๆ และในที่สุดคุณก็จะเป็นผู้เชี่ยวชาญ ต้องใช้เวลาและทำงาน

ดูเพิ่มเติมที่ฉันกำลังมีปัญหาในการเรียนรู้สำหรับคำแนะนำเพิ่มเติม


PS:ถึงแม้ว่ามันจะเป็นเครื่องมือที่เป็นข้อถกเถียงอย่างมากสำหรับการสัมภาษณ์และไม่ได้ช่วยระบุผู้สมัครที่ดี แต่ฉันมักใช้ FizzBuzz เพื่อกำจัด "คนเลว" อย่างไม่น่าเชื่อ ดังนั้น crankin 'กับสิ่งที่ฝึกนี้! :)


3
C'est super ça! :) ขอบคุณสำหรับรายการ Project Euler และปริศนาดูดีมาก และฉันใช้ไซต์ SE อื่น ๆ อยู่แล้ว จะดำดิ่งลงไป
moraleida

@moraleida: ดีใจที่คุณชอบคำตอบ ไม่เป็นไร
haylem

เกี่ยวกับ PS ของคุณ: ตอนนี้ฉันไม่กังวลเกี่ยวกับการสัมภาษณ์เพราะฉันไม่ต้องการกลับไปเป็นพนักงาน ฉันทำการทดสอบเพื่อความสนุกสนานหลังจากอ่านเกี่ยวกับเรื่องนี้ใน Coding Horror ฉันเพิ่งตัดสินใจว่ามันเป็นเส้นเปรียบเทียบฐานที่ดีระหว่างฉันและ devs ที่ผ่านการฝึกอบรมอย่างเป็นทางการ :)
moraleida

4
+1 เพียงเพราะเหตุใด FizzBuzz จึงถูกนำมาใช้ในตอนท้าย ... บ่อยครั้งที่ฉันเห็นความคิดเห็นที่นี่หรือในบล็อกเกี่ยวกับคนวิจารณ์มัน (สำหรับ บริษัท เหล่านั้น: คุณกำลังทำผิด!)
Izkata

1
นี้เป็น บริษัท จดทะเบียนในบางส่วนของการเชื่อมโยง แต่ผมรู้สึกว่ามันใบสำคัญแสดงสิทธิโทรออก: ฉันยังอยากจะมองไปรอบ ๆrosettacode.org มีการแก้ไขปัญหาต่าง ๆ จำนวนมากในภาษาการเขียนโปรแกรมจำนวนมาก มันเป็นแนวปฏิบัติที่ดีในการอ่านโค้ดซึ่งมีความสำคัญพอ ๆ กับการเขียนรวมถึงวิธีที่ดีในการดูวิธีการมากมายในการแก้ปัญหาเดียวกัน และหากคุณพบปัญหาที่ยังไม่ได้รับการแก้ไขในภาษาที่คุณรู้จักหรือต้องการเรียนรู้นั่นเป็นความท้าทายด้านการเขียนโปรแกรมสำหรับคุณ
Mark Reed

60
I didn't have the if($n1 % $n2 == 0) method memorized.

ฉันไม่ได้เขียนโปรแกรมมานานมาก (เริ่มสอนตัวเองเกี่ยวกับ SQL เมื่อประมาณ 27 เดือนที่แล้วและเริ่มเขียนโค้ดด้วยภาษา Perl เมื่อประมาณ 20 เดือนที่แล้ว) แต่ข้อความข้างต้นดูเหมือนว่าบางสิ่งที่ฉันได้ยินจากนักเรียนเก่า:

ฉันควรจำเทคนิคการรวมระบบที่ใช้สำหรับทุกปัญหาได้อย่างไร

ฉันไม่ได้จำได้ว่าควรเพิ่มหรือเพิ่มความน่าจะเป็นทวีคูณหรือใช้ "n เลือก k" หรือใช้แฟคทอเรียล

เดี๋ยวก่อน! คุณบอกว่า x เท่ากับ 2 เมื่อวานนี้! ตอนนี้มันเท่ากับศูนย์!

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

ตอนนี้มันเป็นความจริงที่ความพยายามทางปัญญาใด ๆ ประกอบด้วยการท่องจำอย่างน้อย โดยเฉพาะถ้าคุณกำลังโค้ดใน PHP คุณควรเข้าใจชนิดข้อมูลพื้นฐาน (ตัวเลข, สตริง, อาร์เรย์) สิ่งพื้นฐานที่คุณสามารถทำได้กับมัน (สำหรับตัวเลข: การบวกการลบการคูณการหารและ โมดูลัส; สำหรับสตริง: การต่อข้อมูล, สตริงย่อย, การแทนที่, และอย่างน้อยความรู้เกี่ยวกับนิพจน์ทั่วไป, สำหรับอาร์เรย์: การต่อข้อมูล, การตรึงองค์ประกอบ, การแยกองค์ประกอบ, การนับองค์ประกอบ, การนับ ฯลฯ ) และโครงสร้างตรรกะพื้นฐานที่เราสามารถใช้ (คำสั่ง if / then / else, foreach loops, ในขณะที่ loops เป็นต้น)

จากนั้นเมื่อคุณพบปัญหาให้ใช้ปัญหาเพื่อจัดเตรียมบริบทสำหรับเครื่องมือที่คุณต้องการ สำหรับ FizzBuzz คุณต้องบอกว่าตัวเลขหารด้วย 3, 5 หรือ 15 เอาล่ะดังนั้นเราจึงจัดการกับตัวเลข ... เครื่องมือพื้นฐานอะไรที่ทำให้เราสามารถบอกได้ว่าจำนวนเต็มหนึ่งหารด้วยเมื่อใด ทีนี้ตัวมอดุลัส ดังนั้นใช้มัน (แน่นอนถ้าหมายเลขของคุณคือ$nคุณอาจจะแฟนซีและดูว่าหลักสุดท้ายของ$nเป็น 0 หรือ 5 และ / หรือถ้าตัวเลขของการ$nเพิ่มขึ้นถึงสิ่งที่หารด้วย 3 แต่ฉันพูดนอกเรื่อง ... ) คุณต้อง ทำเช่นนี้สำหรับแต่ละหมายเลขระหว่าง 1 ถึง 100 ดังนั้นเพื่อหลีกเลี่ยงการขุดอุโมงค์ในอุโมงค์ให้ใช้foreachวงวน

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

หยุดการแก้ตัวและเรียนรู้พื้นฐาน


6
ฉันจำไม่ได้ฉันเผาผลาญและทำให้สิ่งเหล่านี้เป็นส่วนหนึ่งของสัญชาตญาณของฉัน พยายามขยายให้เสมอ
ncmathsadist

@ ncmathsadist - ใช่การขยายสัญชาตญาณเป็นกุญแจสำคัญ แต่สัญชาตญาณก็ต้องพึ่งพาการท่องจำแนวคิดรวบยอดและข้อเท็จจริงขั้นพื้นฐานจำนวนเล็กน้อย

สำหรับระเบียนคุณไม่ต้องคูณตัวเลขด้วย 3 แล้วเพิ่มตัวเลขเพื่อดูว่ามันหารด้วย 3 ได้ไหมคุณสามารถเพิ่มตัวเลขได้ ตัวอย่างเช่น 864, 8 +6 + 4 = 18 ซึ่งหารด้วย 3 และ 864
Oztaco

@ leaf68 - ดุ๊ก! [ตบหน้าผาก] คุณถูกต้องแน่นอน ... lemme edit!

27

คุณอาจคิดว่า FizzBuzz เป็นปัญหาของเล่น ฉันจะต้องใช้ตัวดำเนินการโมดูลัสในโปรแกรมจริงเมื่อใด แต่จริงๆคุณใช้มันตลอดเวลา สามตัวอย่างทั่วไป:

  1. คุณกำลังแสดงตารางและคุณต้องการสลับสีพื้นหลังสำหรับแถวที่แตกต่างกัน คุณตรวจสอบว่าแถวเป็นคู่ ( row_number % 2 == 0) และแสดงสีหนึ่งสีสำหรับแถวคู่และอีกแถวสำหรับแถวคี่
  2. คุณมีชุดของวัตถุที่คุณวนซ้ำและคุณต้องการพิมพ์ตารางที่มีวัตถุ N ต่อแถว; ดังนั้นเกณฑ์สำหรับเวลาที่จะเพิ่มตัวแบ่งบรรทัดคือ (item_number% N == 0) ที่จริงฉันมีคำถาม SO เกี่ยวกับพฤติกรรมที่แน่นอนนี้แม้ว่าในภาษา templating นั้นเงื่อนไขif item_number % N == 0ถูกเขียนเป็นเทียบเท่า ( if item_number|divisbleby: N)
  3. คุณกำลังดำเนินการหลายอย่างที่คุณต้องการจัดกลุ่มเป็นธุรกรรมที่ได้รับความมุ่งมั่นเฉพาะเมื่อกลุ่มมีขนาดที่แน่นอนด้วยเหตุผลด้านประสิทธิภาพ บางทีคุณอาจใช้ google data API และคุณไม่ต้องการให้ส่วนหัว HTTP / การตรวจสอบสิทธิ์สำหรับการสร้างธุรกรรมใหม่สำหรับการดำเนินการแต่ละครั้ง หรือคุณกำลังบันทึกข้อมูลลงในฐานข้อมูลของคุณและต้องการที่จะส่งมอบธุรกรรมเมื่อขนาดที่เหมาะสม if cur_item_number % 50 == 0 then commit_dataสิ่งที่ชอบ

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

div_by_3_rem = 0
div_by_5_rem = 0
for(i = 0; i< 50; i++) {
    if(div_by_3_rem == 0 && div_by_5_rem == 0) {
       print "FizzBuzz"
    } elif(div_by_3_rem == 0) {
       print "Fizz"
    } elif(div_by_5_rem == 0) {
       print "Buzz"
    } else {
       print i
    }
    div_by_3_rem += 1
    div_by_5_rem += 1
    if(div_by_3_rem == 3) {
       div_by_3_rem = 0
    }
    if(div_by_5_rem == 5) {
       div_by_5_rem = 0
    }
}

เพื่อสรุปหากคุณต้องการเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมสักวันอย่ากระโดดไปเรียนหนังสือภาษา ใช่หนังสือ PHP / Java จะช่วยให้คุณได้รับคำตอบจาก google / stackoverflow และโปรแกรมทำงานครึ่งหนึ่งเร็วกว่าสิ่งอื่นใด แต่จริงๆแล้วสามารถที่จะรู้วิธีการเขียนโปรแกรมที่ดีที่สุดที่มีคุณภาพและคิดว่าเป็นโปรแกรมเมอร์ที่คุณต้องมีการสัมผัสกับหนังสือ CS จริง

เริ่มต้นด้วยหนังสือ CS ที่แนะนำภาษาการเขียนโปรแกรมและพื้นหลัง CS พร้อมตัวอย่างที่มีชื่อเสียงของโครงสร้างและการตีความของโปรแกรมคอมพิวเตอร์ (ซึ่งจะสอน Scheme - ภาษา Lisp) หรือสิ่งอื่นเช่นThink Python วิธีคิดเหมือนคอมพิวเตอร์ นักวิทยาศาสตร์ (ซึ่งฉันยังไม่ได้อ่าน) ทั้งสองอย่างนี้ออนไลน์ฟรี

ในที่สุดคุณจำเป็นต้องอ่านหนังสืออัลกอริทึมที่ดีที่สุดอัลกอริธึมของ CLRS ที่ดีที่สุด(ไม่ใช่ฟรี) แม้ว่าหนังสืออัลกอริทึมออนไลน์นี้ฟรีอาจเป็นการทดแทนที่มีต้นทุนต่ำ (แต่ถ้าคุณสามารถซื้อ CLRS ได้) หนังสืออัลกอริทึมจะสอนวิธีคิดแก้ปัญหาคอมพิวเตอร์และแนะนำโครงสร้างข้อมูลต่างๆ (อาร์เรย์ / รายการที่เชื่อมโยง / Heaps / Binary Trees / B-Trees / HashTables) และอัลกอริทึมสำคัญที่คุณจำเป็นต้องรู้วิธีใช้อย่างเหมาะสม . คุณไม่จำเป็นต้องจดจำทุกบทพิสูจน์หรือรู้วิธีการเขียนอัลกอริธึมอย่างสมบูรณ์แบบ (ใครเคยใช้ Fibonacci Heap); แต่คุณควรจะรู้ว่าสัญชาตญาณสองวงซ้อนกันสำหรับลูปคือ O (N ^ 2); ประเภทการเปรียบเทียบนั้นดีที่สุด O (N lg N), การค้นหาแบบไบนารีคือ O (lg N), สามารถหาค่ามัธยฐานใน O (N) ได้, ทำไมฐานข้อมูลฮาร์ดดิสก์ใช้ B-Trees เป็นต้น) อย่างน้อยความรู้ที่แข็งแกร่งของหนังสืออัลกอริทึมจะช่วยให้คุณสัมภาษณ์การเขียนโปรแกรมทางเทคนิคของ Google / Facebook หลากหลาย เมื่ออ่านหนังสือการเขียนโปรแกรมไม่เพียง แต่อ่าน / อ่าน คุณ'

ฉันยังแนะนำหนังสือเกี่ยวกับวิศวกรรมซอฟต์แวร์ (ทั้งโค้ดให้เสร็จสมบูรณ์หรือโปรแกรมเมอร์ปฏิบัติ) หลังจากที่คุณได้รับหนังสือ CS และอัลกอริทึมซึ่งจะสอนวิธีปฏิบัติที่ดีที่สุดของวิธีการเขียนโค้ดที่ดีที่สามารถบำรุงรักษาได้ (ชื่อชัดเจน; เก็บรหัสเข้าด้วยกัน refactor เมื่อจำเป็นใช้การควบคุมเวอร์ชัน ฯลฯ )


4
ความคิดเห็นที่ดีที่สุด; ในขณะที่ฉันเห็นผู้คนจำนวนมากพูดว่าฝึกฝนฝึกฝนฝึกฝนนั่นไม่ใช่วิธีที่จะไป การฝึกฝนทำให้สมบูรณ์แบบที่พวกเขาพูด แต่นั่นมีเพียงพฤติกรรมที่ไม่ดี ไปที่ OP: เปิดเผยตัวคุณเองกับแนวคิดอื่น ๆ เรียนรู้ว่าเหตุใดจึงเลือกใช้ quicksort เหนือ Bubbleort การฝึกฝนที่สมบูรณ์แบบเท่านั้นที่ทำให้สมบูรณ์ รับหลักสูตร CS
Pieter B

2
ขอบคุณที่โพสต์โค้ดตัวอย่างฉันคิดว่าฉันจะต้องทำเอง - เราสามารถสร้างวงจรตรรกะที่ซับซ้อนโดยใช้ประตู NAND เพียงอย่างเดียว เรามีภาษาที่มีการทำงานง่าย ๆ เพียงไม่กี่อย่างที่ทัวริงสมบูรณ์ เราไม่ต้องการผู้ประกอบการแฟนซีเหล่านี้ในการแก้ปัญหา การแก้ปัญหาไม่ได้เป็นเพียงแค่การรู้จักเครื่องมือที่เหมาะสมการสามารถแก้ปัญหาได้การหาทางออกที่เหมาะกับความรู้ของคุณคือสิ่งที่ทำให้โปรแกรมเมอร์
กระตุ้น

22

แต่ฉันติดค้างเมื่อวานนี้พยายามหาทางออก (ไม่ใช่ google) สำหรับการทดสอบ FizzBuzz เพราะฉันไม่มีวิธี (if $ n1% $ n2 == 0) ที่จดจำ

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

ฉันกำลังจะออกไปบนกิ่งไม้ที่นี่และโดยทั่วไปแนะนำว่าปัญหาคือ PHP ฉันชอบที่จะบอกว่า Java เป็นภาษาที่แย่ที่สุดที่เคยออกแบบมาและPHP ก็เป็นภาษาที่เลวร้ายที่สุดเท่าที่เคยมีมาเพราะแม้แต่ผู้สร้างก็ยอมรับว่ามันไม่เคยออกแบบมา มันยากที่จะเรียนรู้การปฏิบัติงานวิศวกรรมซอฟแวร์ที่ดีเมื่อสภาพแวดล้อมของคุณเป็นจริงความหมายของวิธีการที่ไม่ได้ที่จะทำมัน และขึ้นอยู่กับกรอบในการทำทุกอย่างที่ทำได้ไม่พูดมาก

ขณะนี้ฉันใช้เวลาว่างศึกษา Java สำหรับโปรแกรมเมอร์ (เพื่อให้ได้ภาษาที่ทุกคนพูดยาก / ยาก)

Java เป็นหนึ่งในภาษาที่ง่ายที่สุดและเลวร้ายที่สุดที่มีอยู่ มีเพียงสิ่งเดียวเท่านั้น: การสืบทอดด้วยตนเองที่เก็บขยะ หากเพื่อนหรือที่ปรึกษาของคุณบอกว่า Java ยากแล้วให้หาเพื่อนใหม่ C ++ เป็นภาษาที่ยากลำบากที่มีจำนวนมากของแนวคิดและที่ไม่มีใครจะโต้แย้ง นอกจากนี้คุณยังสามารถทำ C # ซึ่งอย่างน้อยมีบางข้อมูลทั่วไปและ lambdas

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


14
@moraleida: ไม่มีความละอายในการค้นหาไวยากรณ์สำหรับโอเปอเรเตอร์ที่คุณไม่ได้ใช้
DeadMG

2
@ Moraleida: ในกรณีนี้ฉันเห็นด้วยไม่มีปัญหาจริง ฉันไม่คิดว่ามืออาชีพผู้สัมภาษณ์หรืออย่างอื่นควรคำนึงถึงว่าคุณไม่สามารถใช้นิ้วของคุณในรูปแบบที่ถูกต้องสำหรับภาษาอื่นตราบใดที่คุณสามารถแสดงความตั้งใจของคุณได้อย่างชัดเจน
haylem

5
เห็นด้วยกับประเด็นส่วนใหญ่ แต่ทำไมคุณถึงคิดว่า Java เป็นภาษาที่แย่ที่สุด ฉันไม่ใช่แฟนตัวยงของ Java แต่ฟังดูแล้วน่าเชื่อถือมาก
Casey Kuball

7
-1 สำหรับการใช้คำถามเป็นข้ออ้างในการทุบตี PHP ในกรณีที่ไม่มีความสัมพันธ์กับสิ่งที่ถูกถาม
StasM

1
@Darthfett: ฉันสามารถเขียนเรียงความเกี่ยวกับเรื่องนั้น มาที่การแชท SO C ++ และคุณสามารถอ่านได้: P
DeadMG

11

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

มีสองสิ่งในการเขียนโปรแกรมที่คุณต้องเรียนรู้

  1. กระเป๋าของเทคนิค วิธีอ่านไฟล์ใน PHP, วิธีแยกวิเคราะห์ XML ใน Java, วิธีเชื่อมต่อกับฐานข้อมูลใน Python บางคนจำได้ แต่ในความเป็นจริงสิ่งเหล่านี้มีค่าในการจำเฉพาะเมื่อคุณใช้พวกเขาทุกวัน มิฉะนั้นคุณเพียงไปที่เอกสารและค้นหา สิ่งเหล่านี้ไม่มีสารใด ๆ ยกเว้นรูปแบบตัวอักษรของพวกเขา - คุณเพียงแค่ต้องรู้ว่าคาถาวิเศษเฉพาะเสียงและผลลัพธ์จะเป็นอย่างไร
  2. Mindset นี่คือสิ่งที่สำคัญที่สุด นี่คือวิธีที่คุณเขียนโปรแกรมและสิ่งนี้ไม่เกี่ยวข้องกับการท่องจำ คุณต้องเข้าใจวิธีการอธิบายสิ่งต่าง ๆ ที่คุณต้องการให้ทำกับคอมพิวเตอร์ซึ่งมีวิธีสำหรับการทำสิ่งนั้นและสิ่งใดที่พวกเขาจะใช้ในกรณีใด ๆ ตอนนี้ด้วยเครื่องมือที่ทันสมัยและเอกสารที่ทันสมัยมีความเป็นไปได้ที่เราจะเขียน CMS ทั้งหมดใน PHP โดยใช้วิธี "bag of tricks" แต่เมื่อคุณพบงานที่ไม่มีวิธีแก้ปัญหาแบบสำเร็จรูปคุณจะ "ติดอยู่"

คำอธิบายจากคุณดูเหมือนว่าคุณเริ่มต้นด้วยส่วนแรก แต่ค่อนข้างขาดในส่วนที่สอง หลักสูตร CS ที่ดีมักช่วยได้มาก แต่ไม่ใช่วิธีเดียว พยายามที่จะแก้ปัญหาต่าง ๆ และอ่านเกี่ยวกับวิธีแก้ไขปัญหาเหล่านี้โดยการอ่านหนังสือพื้นฐานที่ยกมาที่นี่ - ทั้งหมดที่จะช่วย เมื่อคุณได้รับความคิดของโปรแกรมเมอร์แล้วคุณจะค้นพบว่าการใช้ลูกเล่นใหม่ ๆ จะไม่เป็นปัญหามากนัก คุณจะต้อง google ที่นี่และที่นั่นแน่นอน แต่คุณจะไม่ติด


1
“ และอ่านเกี่ยวกับวิธีแก้ไขปัญหาเหล่านี้” - อันที่จริงให้ดูวิธีแก้ไขปัญหาต่าง ๆ สำหรับปัญหาเดียวกัน พยายามที่จะเข้าใจแต่ละคนเปรียบเทียบสิ่งที่พวกเขามีเหมือนกันและสิ่งที่พวกเขาทำแตกต่างกัน ทำความเข้าใจกับสิ่งเหล่านั้นและคุณจะเลือกวิธีคิดต่าง ๆ โดยอัตโนมัติในปัญหาเดียวกัน
กระตุ้น

ฉันจะเห็นด้วยอย่างสมบูรณ์ในความคิด เมื่อคุณเข้าใจความคิดและแนวคิดแล้วการเรียนรู้โครงสร้างภาษาพื้นฐานนั้นง่ายกว่ามากและคุณจะเริ่มคิดถึงวิธีทางเลือกในการทำสิ่งต่าง ๆ เป็นหลัก (เช่นสำหรับ fizzbuzz ตัวเลขทั้งหมดที่หารด้วย 5 จะสิ้นสุดใน 5 หรือ 0 ดังนั้นจึงไม่จำเป็นต้องโมดูลัสตัวถูกดำเนินการในส่วนนั้น)
JohnP

9

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

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


1
รหัสกะตะนี้ก็ยอดเยี่ยมเช่นกัน!
moraleida

8

... เพราะฉันไม่ได้จดจำวิธี ($ n1% $ n2 == 0)

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


4
+1 ในขณะที่คำตอบอื่น ๆ พูดคุยเกี่ยวกับวิธีการเป็นช่างฝีมือที่ดีกว่าอาจเป็นสิ่งสำคัญยิ่งกว่าการรู้ว่าเครื่องมือใดมีอยู่จริง เคยลองถอดสกรูที่แตกออกโดยไม่ต้องถอดออกง่ายหรือไม่? มีวิธีอื่น ๆ ที่จะไปเกี่ยวกับเรื่องนี้ แต่มันเป็นหน้าผาก slapper เมื่อคุณเรียนรู้เครื่องมือที่ทำขึ้นสำหรับมันในที่สุด ฉันจะบอกว่า OP ควรอ่านรายชื่อผู้ประกอบการ PHPมานานแล้วและเล่นกับสิ่งที่ไม่คุ้นเคย
Tim Lehner

5

เข้ารหัสต่อไปเรียนรู้ต่อไป ในที่สุดด้วยความทุ่มเทที่เพียงพอคุณจะมองไปที่ FizzBuzz และสงสัยว่าทำไมคุณถึงต้องคิดถึงมัน บริษัท จำนวนมากทำคำถามสไตล์ FizzBuzz เป็นส่วนแรกของการสัมภาษณ์ดังนั้นการล้มเหลวในครั้งนี้หมายความว่าคุณได้เรียนรู้บางสิ่งบางอย่างเกี่ยวกับกระบวนการจ้างงาน

เพียงแค่เขียนโค้ดขึ้นมาพร้อมกับแนวคิดโครงการและการค้นคว้า


4

ฉันขอแนะนำการเรียนรู้ JavaScript ก่อน Java, C ++ ได้ไหม เหตุผลที่คุณ:

  1. ใช้ในการออกแบบส่วนหน้า (jQuery ปลั๊กอิน WordPress บางตัวฟีด Twitter โหลดฐานข้อมูลลงในเบราว์เซอร์ของคุณผ่าน JSON โดยไม่มีงานแบ็คเอนด์เหลือน้อยตรวจสอบรูปแบบ ฯลฯ )
  2. สามารถใช้ฝั่งเซิร์ฟเวอร์ผ่าน Node.js
  3. สามารถใช้สร้างแอพไฮบริดสำหรับ iOS, Android, Win8 และอื่น ๆ
  4. การศึกษา JS จะช่วยให้คุณเข้าใจประสิทธิภาพของหน้าเว็บในเบราว์เซอร์และอุปกรณ์ต่าง ๆ ได้ดีขึ้น
  5. JS ถูกออกแบบมาให้เป็นมือใหม่มากขึ้น
  6. คุณรู้จัก HTML & CSS อยู่แล้ว (ฉันหวังว่า;) ดังนั้นสิ่งที่ช่วยให้กับ JS

ฟรีแหล่งข้อมูลมือใหม่

http://www.codecademy.com/tracks/code-year
https://stackoverflow.com/tags/javascript/info
ฉันมีลิงก์มากกว่า 10 ลิงก์ แต่ SE จะไม่ให้ฉันโพสต์จนกว่าฉันจะกด 10 ตัวแทน

การเรียนรู้ C ++, Java และอื่น ๆ ก็มีประโยชน์เช่นกัน แต่ไม่ใช่ว่า IMHO นั้นจะไม่ส่งผลกระทบต่อการเขียนโปรแกรมเว็บอย่างที่ JS ทำเพราะคุณสามารถใช้มันได้ทั้งด้านหน้าและด้านหลัง มีความสุข!


tutsplus.com/course/30-days-to-learn-jquery ### การเรียนรู้ขั้นสูงและฟรี Deep thinkvitamin.com/code/tips-on-learning-javascript netmagazine.com/tag/javascript?ct=tutorial blog.boyet .com / บล็อก / javascriptlessons nczonline.net/blog/tag/javascript javascriptweekly.com jsperf.com/popular ฉันแน่ใจว่าคุณรู้เกี่ยวกับ SitePoint ฯลฯ ### ชำระเงินเพื่อเรียนรู้shop.oreilly.com/product/0636920023982.do " JavaScript สำหรับนักพัฒนา PHP ";) teamtreehouse.com/library/search?q=javascript
tomByrer

1
และเมื่อคุณพร้อมที่จะรับงาน: jobety.com
imns

3

คุณสามารถค้นหาและช่วยเหลือผู้อื่นเช่นgiving.code (การเปิดเผย: เว็บไซต์ของฉัน) หรือรหัสสำหรับอเมริกาหรืออะไรก็ตาม นี่เป็นวิธีที่ยอดเยี่ยมในการได้รับปัญหาที่ไม่ใช่ PHP-web-page-making และรู้สึกดีเช่นกัน

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


1
น่ากลัว! นี่เป็นวิธีที่ดีมากในการเรียน!
moraleida

0

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

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


(นี่หมายถึงให้เสียงสูง แต่ไม่แน่ใจว่าฉันทำสำเร็จแล้วฮ่า ๆ ๆ )
Nick Spreitzer

0

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

  1. พวกเขารู้ว่ามันเป็นผู้ดำเนินการบางอย่าง
  2. พวกเขาสามารถบอกฉันได้ว่า "โมดูลัส" คืออะไรเมื่อฉันถามพวกเขา

มันไม่ได้เสมอ (แต่มักจะ)% และบางภาษาแปลก และหลังจากผ่านไปสิบปีฉันก็ไม่สามารถพูดได้อย่างตรงไปตรงมาว่าฉันรู้ว่าผู้ประกอบการ perl ทุกคน (และยานอวกาศทำอะไรอีกแล้ว?) ฉันไม่สามารถจดจำผู้ประกอบการระดับบิตได้อย่างสมบูรณ์ ไม่กี่ปีที่ผ่านมาตั้งแต่ฉันทำอะไรก็ได้ที่ต้องการสิ่งเหล่านั้น

สิ่งที่อาจทำให้ฉันลังเลที่จะแนะนำใครบางคนอาจเป็นเพราะมันทำให้พวกเขาต้องตกใจเมื่อพบคำถาม / การทดสอบ นั่นอาจทำให้ฉันรู้สึกว่าพวกเขาเขียวเกินไปเล็กน้อย (เว้นแต่ว่ามันเป็นตำแหน่งระดับเริ่มต้นที่ดีมาก) ไม่มีใครต้องการใครสักคนที่ (หรือรู้สึกถึงความต้องการ) จดจำสิ่งเหล่านั้น คุณต้องการคนที่เข้าใจแนวคิดที่กว้างไกล ไม่มีใครสนใจถ้าคุณค้นหาสิ่งนี้บน google แต่คุณจะต้องมั่นใจในการสัมภาษณ์ว่าการรู้% นั้นไม่ใช่เรื่องใหญ่อะไรและคุณรู้ว่าจะใช้ "โอเปอเรเตอร์" เป็นคำหลักเมื่อคุณทำ google อย่างรวดเร็ว ค้นหา.

นี่เป็นเพียงความคิด ... แต่ถ้าวิทยาลัยชุมชนในท้องถิ่นของคุณมีโปรแกรม compsci หน่วยกิตอื่น ๆ ของคุณจะโอนย้ายทั้งหมดและคุณอาจต้องการเพียง 20 หน่วยกิตสำหรับการศึกษาระดับปริญญา 2 ปี เกือบจะเสร็จสิ้นในภาคการศึกษา พวกเขาต้องการให้คุณทำหลักสูตรโครงสร้างข้อมูลและหวังว่าอัลกอริทึม ... อาจทำให้คุณแข็งแกร่งขึ้นเล็กน้อย


-1

นี่คือหลักสูตรตัวอย่าง: http://www.ox.ac.uk/admissions/undergraduate_courses/courses/computer_science/computer_science_.html

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

เมื่อฉันดูการศึกษาวิทยาศาสตร์คอมพ์ระยะเวลา 4 ปีพูดตามตรงฉันคิดว่ามีหลักสูตรเพียงไม่กี่หลักสูตรที่คุณต้องจริงจัง

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

เพียงดาวน์โหลดไฟล์ PDF ที่อธิบายแนวคิดเหล่านี้ด้วยวิธีที่เข้าใจง่ายและคุณจะไปได้

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

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


-3

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

ความสงบ

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