การแก้ไขให้ถูกต้องระหว่างการสัมภาษณ์มีความสำคัญอย่างไร [ปิด]


40

เมื่อขอให้ผู้สมัครสัมภาษณ์เขียนโปรแกรมบนไวท์บอร์ดคุณคาดหวังให้ผู้สมัครเขียนรหัสที่ถูกต้องทางไวยากรณ์หรือไม่

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

ฉันชอบผู้สมัครคนแรก


75
ทางเลือกของคุณสมเหตุสมผลถ้าคุณคาดหวังให้โค้ดใน Notepad ฉันเดา
Benjol

20
ไวยากรณ์ pseudocode จะไม่ถูกต้องได้อย่างไร หรือคุณกำลังขอให้พวกเขาเขียนเป็นภาษาจริงบ้างไหม?!?
SK-logic

6
ขึ้นอยู่กับรายละเอียดงาน ... แก้ไขสำเนา?
Konrad Rudolph

9
สามารถเรียนรู้ไวยากรณ์ได้ซึ่งเป็นงานที่ไม่สำคัญเกิดขึ้นในสองสามสัปดาห์กับงาน ความสามารถในการแก้ปัญหาด้วยตรรกะที่ดีกว่านั้นยากที่จะเรียนรู้ถ้าไม่เป็นไปไม่ได้ขึ้นอยู่กับระดับทักษะของโปรแกรมเมอร์ Synax ที่ไม่ถูกต้องแก้ไขตัวเองเมื่อคุณไปรวบรวมหรือดูงานของคุณในเบราว์เซอร์ (นั่นคือไม่ถูกต้อง)
Ramhound

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

คำตอบ:


125

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

เมื่อคุณพัฒนารหัสในงานคุณมีเครื่องมือมากมาย - IDEs, คอมไพเลอร์, การวิเคราะห์แบบคงที่, การทดสอบหน่วย, การทดสอบการรวมและขั้นตอนการทดสอบการยอมรับ - เพื่อค้นหาข้อผิดพลาดในไวยากรณ์และตรรกะ หากคุณกำลังเขียนบนกระดานไวท์บอร์ดคุณไม่มีเครื่องมือเหล่านี้และคุณต้องผูกพันกับข้อผิดพลาดทางไวยากรณ์ (ลืมชื่อเมธอดเซมิโคลอนเครื่องหมายวงเล็บ) และฉันสามารถยกโทษให้ได้

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


6
+1 แต่บางครั้งมันก็เป็นการวัดที่ดีว่าผู้คนสบายใจในภาษาใดภาษาหนึ่ง โดยส่วนตัวฉันไม่เคยใส่น้ำหนักมากนัก (เห็นด้วยอย่างยิ่งว่าอัลกอริทึมนั้นสำคัญอะไร) แต่ก็ไม่เจ็บ
Demian Brecht

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

1
สิ่งหนึ่งที่ฉันสังเกตเห็นเกี่ยวกับการเขียนโค้ดของตัวเอง - ถ้าฉันทำงานกับหลายภาษาคอมไพเลอร์ตรวจจับข้อผิดพลาดทางไวยากรณ์ได้มากกว่าที่ฉันกำลังทำงานด้วย
Loren Pechtel

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

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

46

ฉันจะชอบผู้สมัครที่สอง ลอจิกได้ยาก ( มากยากบางครั้ง) เพื่อให้ได้ตรงขวา ไวยากรณ์ได้ง่ายมากเมื่อ IDE และคอมไพเลอร์และเครื่องมือสารพันอื่น ๆ ช่วยเหลือ

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


1
เผง คุณสามารถสอนไวยากรณ์ (โดยเฉพาะถ้าพวกเขารู้ไวยากรณ์อื่น ๆ อยู่แล้ว) คุณไม่สามารถสอนการใช้เหตุผลด้านเสียงได้อย่างง่ายดาย
Tridus

19

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

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

อย่างไรก็ตามมีข้อผิดพลาดบางอย่างซึ่งในขณะที่ข้อผิดพลาดทางไวยากรณ์เท่านั้นแสดงความผิดพลาดที่ลึกกว่า

เป็นตัวอย่างที่ค่อนข้างเทียมจะได้รับจุดข้าม: พิจารณาโปรแกรมเมอร์หลามที่นำหน้าตัวแปรทั้งหมดของเขาด้วย $ for list as itemหรือเขียนสำหรับวงเป็น ในทางเทคนิคแล้วทั้งสองเป็นข้อผิดพลาดทางไวยากรณ์ แต่ถึงแม้จะมีเพียงการสัมผัสกับงูหลามที่ จำกัด เท่านั้นที่ควรรู้วิธีการเกี่ยวกับตัวละครทางกฎหมายและสำหรับวง มันจะเป็นการดีที่ผู้สมัครจะรู้ php (หรือ perl?) และพยายามที่จะเผชิญหน้ากับทักษะของหลาม


15

ฉันต้องการผู้สมัครที่สองในทางทฤษฎีว่าไวท์บอร์ดมีผลกระทบต่อไวยากรณ์มากกว่าในเชิงตรรกะและความผิดพลาดทางไวยากรณ์นั้นง่ายต่อการแก้ไข - ทั้ง IDE หรือคอมไพเลอร์สามารถทำได้


15

ฉันเขียน SQL และ CSS (ภาษาที่ง่ายที่สุดและพื้นฐานที่สุดที่ฉันรู้จัก) มาเกือบ 13 ปีแล้วและฉันไม่สามารถจดจำไวยากรณ์ได้ตลอดเวลา

เพื่อนของฉัน (เช่นนักพัฒนา) ทำงานเพื่อกองทุนป้องกันความเสี่ยงเขาไม่สามารถจำไวยากรณ์สำหรับคำสั่งแทรกได้

เราทั้งคู่จบลงที่โรงเรียน W3CSฉันคิดว่าเราน่าจะอาย (เขามีปริญญาและฉันมีปริญญาเอก)

อย่างไรก็ตามเพื่อความซื่อสัตย์ฉันคิดว่าเรามีความสำคัญของเราถูกต้อง ไวยากรณ์ไม่ใช่ทักษะที่สำคัญ


13

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

นอกจากนี้หากมีคนอ้างว่ามีประสบการณ์ด้านภาษามานานหลายปีและไม่สามารถแก้ไขไวยากรณ์พื้นฐานให้ถูกต้องได้

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

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

ฉันเดาว่าฉันคิดอะไรอยู่นี่คือข้อผิดพลาดทางไวยากรณ์ที่ยอมรับได้ภายในขีด จำกัด


5

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


5

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


5

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


5

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

นอกจากนี้ความคาดหวังของคุณเกี่ยวกับรหัสที่สมบูรณ์แบบ (บนกระดานไวท์บอร์ด!) อาจไม่ตรงกับผู้สัมภาษณ์ - ตัวอย่างเช่นในการสัมภาษณ์ครั้งหนึ่งที่ฉันเข้าร่วมฉันถูกขอให้เขียนชั้นเรียนซึ่งฉันได้ทำเพื่อให้ผู้สัมภาษณ์ดึงฉันขึ้น ในตัวสร้างสำเนา ดังนั้นฉันจึงเขียนหนึ่งในซึ่งไม่ได้ทำอะไรนอกจากตั้งค่า a = b แต่นั่นก็เพียงพอแล้วที่จะทำให้เขาพึงพอใจ ความคาดหวังของปัญหาไม่จำเป็นต้องมีสำเนา ctor ดังนั้นฉันจึงทิ้งมันไว้นอกเหนือไปจากปัญหาที่ถูกแก้ไข - ฉันไม่ได้คาดหวังว่าจะต้องเขียนโค้ดที่คอมไพล์ได้อย่างสมบูรณ์แบบ (มาตรฐานการเข้ารหัสที่ซ่อนอยู่ของเขา) เพียงแค่แสดง ความเข้าใจในการแก้ปัญหาของฉัน (ผู้สัมภาษณ์คนเดียวกันไม่ชอบวิธีแก้ปัญหาของฉันเหมือนกันมันไม่ใช่วิธีที่เขาจะทำอย่างชัดเจนดังนั้นฉันจึงเข้าใจผิดมันถอนหายใจ)

หากคุณต้องการรหัสการทำงานจากผู้ให้สัมภาษณ์ให้คอมไพเลอร์ แล้วอย่าบ่นเมื่อพวกเขาออกใบแจ้งหนี้ให้คุณ :)

ดังนั้นสำหรับคนที่รู้ว่าเขากำลังทำอะไรอยู่ไม่ใช่คนที่สามารถพูดคำ แต่ไม่เข้าใจความหมาย


3

ในระหว่างการสัมภาษณ์ผู้สัมภาษณ์มีความสนใจที่จะเห็นคุณ

  1. แนวทางการแก้ไขปัญหา
  2. ทักษะที่ใช้ในการแก้ปัญหาและ
  3. ใช้เวลาอย่างมีประสิทธิภาพให้ทางออกที่เหมาะสม

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

ตรรกะและไวยากรณ์ที่เหมาะสมรวมเข้าด้วยกันสามารถทำเคล็ดลับสำหรับคุณในการสัมภาษณ์

ความผิดพลาดเล็ก ๆ น้อย ๆ จะไม่เสียค่าใช้จ่ายคุณมากนักถ้าตรรกะดีพอ

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

ฉันหวังว่าและกระตุ้นให้คุณให้อะไรมากกว่าบอร์ดสีขาวหรือแผ่นจดบันทึกเพื่อเขียนรหัส

ฉันจะไปกับผู้สมัครที่สอง ..


2

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

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

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

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

อย่างไรก็ตามหากผู้สมัครทั้งสองแก้ปัญหาด้วยตรรกะที่ถูกต้องผู้ชายที่มีไวยากรณ์ที่ถูกต้องอาจมีข้อได้เปรียบ หากมีใครแก้ปัญหาได้ แต่ไม่เป็นเช่นนั้นฉันก็จะไปกับคนที่สามารถแก้ปัญหาได้

อย่างไรก็ตามถ้ามีคนอ้างว่าเป็นผู้เชี่ยวชาญใน Java และไม่สามารถประกาศอาร์เรย์ของการใช้คำสั่ง if หรือในขณะที่ลูปพวกเขาอาจจะโกหก แต่ฉันอาจเข้าใจว่าใครบางคนเป็นผู้เชี่ยวชาญใน Java แต่ได้รับ C # มากเมื่อเร็ว ๆ นี้และพยายามที่จะทำแผนที่หรือบางสิ่งบางอย่าง .... นอกจากนี้ถ้าคุณเข้าไปในไลบรารีที่เฉพาะเจาะจงหรือใครบางคนทำ myArray.length แทน myArray .Length หรือ string.length () / string.Length / string.length แทน string.length () ... สิ่งเล็กน้อยฉันจะให้อภัย หรือถ้าพวกเขาลืมคำสั่งโต้แย้งของการเรียกห้องสมุด หรือพิมพ์ผิด / กึ่งโคลอนที่นี่หรือมี ....


1

ฉันจะไม่รับสิ่งใดเลย

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

อย่างไรก็ตามตรรกะมีความสำคัญมากกว่าไวยากรณ์


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

@ SK-logic: ฉันเห็นด้วยอย่างสิ้นเชิง แต่หลายครั้งที่มีคนมาที่นี่บอกว่าพวกเขาสามารถเขียนโปรแกรมเป็นภาษา xxx แล้วพวกเขาก็จำไม่ได้ว่าจำเป็นต้องใช้เครื่องหมายอัฒภาคหรือไม่ มันง่ายที่จะเรียนรู้ไวยากรณ์ของภาษาใหม่ แต่ถ้าฉันกำลังมองหาใครบางคนที่พูดได้คล่องในภาษาใดภาษาหนึ่งมันจะต้องเป็นอย่างนั้น นอกจากนี้ฉันได้ชี้ให้เห็นแล้วว่าตรรกะนั้นสำคัญกว่าวากยสัมพันธ์
Jose Faeti

1

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

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


1

แน่นอนว่ามันจะขึ้นอยู่กับตำแหน่งที่สัมภาษณ์และอาจขึ้นอยู่กับภาษาด้วย

ทำงานกับ C ++ การมีผู้ชายที่พูดติดอ่างกับไวยากรณ์นั้นน่ากลัว C ++ เต็มไปด้วยมุมมืดกับดักวางพื้นทุกที่ การพูดติดอ่างในไวยากรณ์หมายถึงการแสดงออกที่ไม่ดีต่อภาษาและผู้เริ่มต้นภาษา C ++ ทำผิดพลาดมากมาย (ไม่ได้บอกว่าคนอื่นไม่ทำตามเวลา)

ในการตอบคำถามของคุณจากนั้น:

  • ถ้าฉันต้องการเติมตำแหน่งนักพัฒนาอย่างง่ายฉันจะเข้าใจคนนั้นด้วยไวยากรณ์ C ++ เขาจะไม่ส่องแสง แต่ไม่ควรก่อให้เกิดภัยพิบัติมากเกินไป
  • หากฉันต้องการกรอกตำแหน่งผู้พัฒนาผู้มุ่งหวังฉันจะไม่ทำเช่นนั้น นักพัฒนาลีดควรจะมีทั้งประสบการณ์และตรรกะ

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


1

เรื่องจริงฉันยังคงลืมไวยากรณ์ของเหตุการณ์ C # เมื่อฉันต้องเขียนมันออกมาด้วยมือ บางครั้งมันเกิดขึ้นในการสัมภาษณ์ ฉันไม่มีปัญหาเมื่อฉันรหัสที่แป้นพิมพ์

เลือกคนที่สามารถใช้รหัสไม่ใช่คนที่ไม่สามารถ แต่สามารถจดจำไวยากรณ์ได้


0

เมื่อฉันเขียนโค้ดลงบนกระดาษ / ไวท์บอร์ดแม้ในการสัมภาษณ์งานฉันก็มักจะข้ามประโยคขนาดใหญ่ ฉันไม่ได้ใช้ semi colons, fudge method call, และอื่น ๆ ฉันมีแนวโน้มที่จะเขียนประโยคที่อธิบายถึง 4 บรรทัดของโค้ดพื้นฐานจริงๆมากกว่าโค้ด จริง ๆ ฉันใช้ pseudocode เหมือน php และพูดถึงสิ่งที่ฉันทำในขณะที่ฉันกำลังทำและจดความคิดเห็นสั้น ๆ เพื่ออธิบายสิ่งที่ฉันคัดสรร (ซึ่งในทางทฤษฎีแล้วไม่มีความสำคัญอะไรกับ โปรแกรม)

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

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


0

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

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

หากฉันกำลังพิจารณาบุคคลที่ฉันรู้ว่ามีคุณสมบัติที่ยอดเยี่ยมในสาขาที่เกี่ยวข้อง แต่มีความรู้ในภาษาเฉพาะของฉันน้อยฉันอาจจะให้อภัยข้อผิดพลาดทางไวยากรณ์ได้เช่นกัน ฉันต้องการจ้างนักพัฒนา Oracle ที่ยอดเยี่ยมมากกว่าผู้พัฒนา SQl Server ที่ธรรมดาสำหรับงาน SQL Server (แน่นอนว่าบุคคล SQL Server ที่ยอดเยี่ยมจะดีที่สุด) และจะไม่คาดหวังให้บุคคลนั้นรู้ไวยากรณ์ SQL Server ถ้าพวกเขาสามารถแสดงวิธีการ ทำใน Oracle สิ่งเดียวกันกับคน Java และ C # คนที่มีทักษะการแก้ปัญหาที่ยอดเยี่ยมชนะคนที่มีทักษะการใช้ภาษาที่ยอดเยี่ยม แต่คนที่ชนะทั้งสองครั้งทุกครั้ง (พวกเขาหายากในบางครั้ง)

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