สวัสดี! วันนี้เราจะพูดถึงเส้นทางการเติบโตของ Java Developer และสิ่งที่เขาหรือเธอต้องรู้เพื่อเป็นที่ต้องการ ในการสัมภาษณ์ นักพัฒนาอาจย่างผู้สมัครงาน ตัวอย่างเช่น พวกเขาอาจเริ่มถามคำถามเกี่ยวกับหัวข้อเฉพาะที่พวกเขาพบในโครงการปัจจุบันของพวกเขา แต่หารู้ไม่ ทุกสิ่งเป็นธรรมดา. การที่คุณตอบคำถามบางข้อไม่ได้ก็เป็นเรื่องปกติเช่นกัน ตามกฎทั่วไป โปรแกรมเมอร์ Java ทุกคนต้องมีความเข้าใจพื้นฐานเกี่ยวกับการพัฒนาซอฟต์แวร์ ลองมาดูสิ่งที่ถือว่าเป็น "พื้นฐาน"
คุณควรใส่สิ่งนี้ไว้ตั้งแต่แรก เพื่อให้คุณเข้าใจว่า Spring คืออะไร — ทั้งหมดเกี่ยวกับ Spring containers, bean, DI, IoC และอื่นๆ เพื่อให้เข้าใจถึงปรัชญาของการใช้ Spring ก็ว่ากันไป การศึกษาเพิ่มเติมเกี่ยวกับ Spring frameworks ของคุณจะต่อยอดจากฐานนี้ บางทีคุณควรสร้างแอปพลิเคชันขนาดเล็กของคุณเอง ซึ่งคุณสามารถรวมเทคโนโลยีที่เรียนรู้ใหม่ทั้งหมดอย่างค่อยเป็นค่อยไป
ก่อนหน้านี้เราได้กล่าวถึง JDBC ว่าเป็นเทคโนโลยีสำหรับสร้างการเชื่อมต่อฐานข้อมูล โดยทั่วไปแล้ว การใช้เทคโนโลยีแบบ "เปล่า" ไม่สามารถพบได้ในโครงการอีกต่อไป ดังนั้นคุณอาจสรุปได้ว่าการเรียนรู้ JDBC ไม่จำเป็น นี่ไม่ใช่ทัศนคติที่ถูกต้องนัก ด้วยการสำรวจการใช้งาน JDBC แบบเปลือยเปล่า (โดยตรง) คุณจะเห็นเทคโนโลยีในระดับที่ต่ำกว่าและเข้าใจปัญหาและข้อบกพร่องของมัน จากนั้นเมื่อคุณเริ่มเรียนรู้ Spring JDBC คุณจะรู้ว่าเฟรมเวิร์กนี้ปรับปรุง ปรับแต่ง และซ่อนอะไรกันแน่
เฟรมเวิร์กนี้ใช้ประโยชน์จากเทคโนโลยีที่มีอยู่แล้ว ในกรณีนี้คือ Hibernate คล้ายกับสถานการณ์ของ JDBC เปล่า หากคุณพิจารณาใช้ Hibernate โดยไม่มี Spring คุณจะรู้ถึงประโยชน์ที่ Spring Hibernate มอบให้อย่างแน่นอน
ก่อนหน้านี้เราได้พูดถึง JPA และกล่าวว่าเป็นเพียงข้อมูลจำเพาะเท่านั้น แม้ว่าจะมีการใช้งานที่หลากหลาย ในบรรดาการใช้งานเหล่านี้ Hibernate ใกล้เคียงกับอุดมคติมากที่สุด Spring มีการใช้งาน JPA ในอุดมคติของตนเองซึ่งใช้ Hibernate ภายใต้ประทุน ใกล้เคียงกับอุดมคติของข้อกำหนด JPA มากที่สุดเท่าที่จะเป็นไปได้ เรียกว่า Spring JPA มันทำให้เข้าถึงฐานข้อมูลได้ง่ายมาก คุณสามารถเรียนรู้ JPA ได้โดยไม่ต้องเรียนรู้ JDBC, Hibernate, Spring JDBC หรือ Spring Hibernate แต่ถ้าคุณใช้วิธีนี้ ความรู้ของคุณเกี่ยวกับวิธีเชื่อมต่อกับฐานข้อมูลจะเป็นเพียงผิวเผิน
เทคโนโลยีนี้ทำให้สามารถแสดงเว็บอินเตอร์เฟสของแอปพลิเคชันของเราแก่ผู้ใช้ และอำนวยความสะดวกในการสื่อสารระหว่างอินเทอร์เฟซและส่วนที่เหลือของแอปพลิเคชัน นอกจากนี้ยังสามารถใช้เทคโนโลยีนี้โดยไม่ใช้จอแสดงผลเมื่อคุณมีแอปพลิเคชันที่รับผิดชอบในการจัดการจอแสดงผล และคุณกำลังโต้ตอบกับแอปพลิเคชันโดยใช้เทคโนโลยีRESTful เพื่อดื่มด่ำกับข้อมูลเกี่ยวกับฤดูใบไม้ผลิ นอกจากบทความและการบรรยายบน YouTube แล้ว คุณยังสามารถอ่านหนังสือได้หลายเล่ม ฉันชอบหนังสือ "Spring in Action" ของ Craig Walls มาก ฉันแนะนำให้คุณอ่านรุ่นที่ 6 ถ้าคุณรู้ภาษาอังกฤษดี หนังสือที่ยอดเยี่ยมอีกเล่มเกี่ยวกับฤดูใบไม้ผลิคือ "Spring 5 for the Professionals" มันหนาแน่นมากขึ้น เหมือนกับการอ้างอิงที่มีค่ามากกว่าที่จะเก็บไว้ใกล้มือมากกว่าที่จะอ่านจากปกแล้วครอบคลุม
เทคโนโลยีนี้ทำให้การใช้ Spring ง่ายขึ้นอย่างมาก ฉันไม่ได้วางไว้ท้ายรายการด้วยความตั้งใจ อันที่จริง มันซ่อนอะไรไว้มากมายภายใต้ประทุน และสำหรับคนที่ไม่คุ้นเคยกับกลิ่นวานิลลาสปริง หลายๆ จุดอาจไม่ชัดเจนหรือไม่เข้าใจ ขั้นแรก เพื่อให้เข้าใจถึงวิธีการทำงานของ Spring Framework ได้ดียิ่งขึ้น คุณควรใช้ Spring แบบปกติ จากนั้นเลือกรับประโยชน์ที่สูงขึ้นจากการใช้ Spring Boot ฉันขอแนะนำให้คุณทำความคุ้นเคยกับ Spring Security และ Spring AOP แต่แตกต่างจากเทคโนโลยีข้างต้น ความรู้เชิงลึกของทั้งสองยังไม่จำเป็นในตอนนี้ เทคโนโลยีนี้ไม่เหมาะสำหรับผู้เริ่มต้น ในการสัมภาษณ์ ผู้พัฒนารุ่นเยาว์จะไม่ถูกถามเกี่ยวกับพวกเขา (ยกเว้นคำถามที่ผิวเผิน) อ่านภาพรวมว่าเทคโนโลยีเหล่านี้คืออะไรและหลักการทำงานเบื้องหลัง ในบทความนี้, ฉันได้กล่าวถึงการอ่านหนังสือซ้ำแล้วซ้ำเล่า ในแง่หนึ่ง สิ่งนี้ไม่จำเป็น คุณสามารถเป็นโปรแกรมเมอร์ได้โดยไม่ต้องอ่านหนังสือเล่มใดเล่มหนึ่ง รับความรู้ที่จำเป็นทั้งหมดจากบทความออนไลน์และวิดีโอการฝึกอบรม ในทางกลับกัน ในตลาดงาน การแข่งขันระหว่างนักพัฒนามือใหม่นั้นสูงในปัจจุบัน ซึ่งเป็นการยกระดับสิ่งที่ผู้เริ่มต้นจำเป็นต้องรู้ ดังนั้น ยิ่งคุณรู้มากเท่าไหร่ คุณก็ยิ่งหางานแรกได้เร็วขึ้นโดยสร้างความประทับใจแก่ผู้สัมภาษณ์ด้วยระดับความรู้ของคุณ ขอบคุณทุกคน และขอให้ Java อยู่กับคุณ ซึ่งเป็นการยกระดับสิ่งที่ผู้เริ่มต้นจำเป็นต้องรู้ ดังนั้น ยิ่งคุณรู้มากเท่าไหร่ คุณก็ยิ่งหางานแรกได้เร็วขึ้นโดยสร้างความประทับใจแก่ผู้สัมภาษณ์ด้วยระดับความรู้ของคุณ ขอบคุณทุกคน และขอให้ Java อยู่กับคุณ ซึ่งเป็นการยกระดับสิ่งที่ผู้เริ่มต้นจำเป็นต้องรู้ ดังนั้น ยิ่งคุณรู้มากเท่าไหร่ คุณก็ยิ่งหางานแรกได้เร็วขึ้นโดยสร้างความประทับใจแก่ผู้สัมภาษณ์ด้วยระดับความรู้ของคุณ ขอบคุณทุกคน และขอให้ Java อยู่กับคุณ
1. อัลกอริทึมพื้นฐาน
สิ่งแรกที่ต้องจัดการเมื่อเริ่มเรียนรู้การเขียนโปรแกรม (ไม่ใช่แค่ Java) คือการเข้าใจพื้นฐาน ตัวอย่างเช่น อัลกอริทึม มีจำนวนนับไม่ถ้วน และคุณไม่ควรฆ่าเวลาทั้งชีวิตเพื่อพยายามเรียนรู้อัลกอริทึมให้ได้มากที่สุด เพราะส่วนใหญ่จะไม่เป็นประโยชน์กับคุณ คุณสามารถรับความรู้ขั้นต่ำที่จำเป็นได้จากหนังสือ "อัลกอริทึม Grokking" นี่เพียงพอที่จะช่วยให้คุณเริ่มต้นได้ แต่หากต้องการ คุณสามารถเรียนรู้ได้จากหนังสือ "โครงสร้างและอัลกอริทึม" หรือ "อัลกอริทึมใน Java" โดย Robert Sedgewick และ Kevin Wayne ฉันขอแนะนำให้คุณปรับปรุงความรู้พื้นฐานด้านวิทยาการคอมพิวเตอร์ สามารถทำได้ด้วยหลักสูตร Harvard CS502. วากยสัมพันธ์ของจาวา
หลังจากเรียนรู้พื้นฐานของอัลกอริทึมแล้ว เราจำเป็นต้องเรียนรู้ไวยากรณ์ของ Java ท้ายที่สุด เราทุกคนกำลังศึกษาเพื่อเป็นโปรแกรมเมอร์ Java ที่นี่ใช่ไหม? หลักสูตร CodeGym เหมาะสำหรับสิ่งนี้ ในขณะที่คุณทำงานนับไม่ถ้วน คุณจะได้สัมผัสกับไวยากรณ์ของ Java จากนั้นคุณจะเขียน/อ่านโค้ด Java ราวกับว่ามันเป็นภาษาแม่ของคุณโดยไม่ลังเล CodeGym คือการฝึกฝน แต่นอกเหนือจากนั้น คุณต้องดูทฤษฎีเพื่อทำความเข้าใจว่าคุณกำลังทำอะไรอยู่ ในการทำเช่นนี้คุณสามารถอ่านหนังสือได้ ตัวอย่างเช่น หนึ่งในรายการต่อไปนี้:- "หัวหน้าคนแรก Java",
- "Java for Dummies" โดยแบร์รี่ เบิร์ด;
- "Java: คู่มือสำหรับผู้เริ่มต้น" โดย Herbert Schildt
- “การคิดใน Java” บรูซ เอคเคล;
- "Effective Java" โดย Joshua Bloch;
- "Java: การอ้างอิงที่สมบูรณ์" โดย Herbert Schildt
3. รูปแบบการออกแบบ
รูปแบบการออกแบบเป็นรูปแบบที่ทำซ้ำได้ซึ่งช่วยแก้ปัญหาในบริบทที่พบบ่อย รวมถึงรูปแบบพื้นฐานที่เรียบง่ายซึ่งโปรแกรมเมอร์ที่เคารพตนเองทุกคนควรรู้ เพื่อทำความเข้าใจหัวข้อนี้ ให้คว้าหนังสือ "รูปแบบการออกแบบก่อนใคร" โดยจะอธิบายรูปแบบการออกแบบพื้นฐานในแบบที่เข้าถึงได้ แต่หนังสือเล่มนี้พูดถึง Java ค่อนข้างมาก ดังนั้นเมื่อคุณอ่านหนังสือเล่มนี้ คุณต้องมีความคล่องแคล่วในภาษาโปรแกรมนี้ด้วย หากต้องการเจาะลึกลงไปในรูปแบบ คุณสามารถอ่าน "รูปแบบการออกแบบ: องค์ประกอบของซอฟต์แวร์เชิงวัตถุที่นำกลับมาใช้ใหม่ได้" จาก Gang of Four ( หมายเหตุบรรณาธิการ: Gang of Four คือทีมผู้เขียนที่มี Erich Gamma, Richard Helm, Ralph จอห์นสัน, จอห์น วลิสไซด์.). เมื่อคุณศึกษาหัวข้อนี้แล้ว คุณจะเริ่มเห็นรูปแบบแทบทุกที่ในโค้ดของคุณ ให้ความสนใจกับเรื่องนี้ โดยเฉพาะรูปแบบที่ใช้ใน Spring เนื่องจากเป็นคำถามสัมภาษณ์ยอดนิยม4. กระบวนทัศน์การเขียนโปรแกรม ความสะอาดของรหัส
นอกจากรูปแบบการออกแบบมาตรฐานแล้ว ยังมีหลักการและกระบวนทัศน์ต่างๆ ที่ควรทราบ ( SOLID , GRASP ) คุณต้องรักษารหัสของคุณให้สะอาดและสามารถอ่านได้ สำหรับทุกสิ่ง คุณจำเป็นต้องรู้เกี่ยวกับหัวข้อนี้ ดู Clean Code โดย Robert Martin หรือดูที่ "Code Complete" โดย Steve McConnell5. เอสคิวแอล
ขั้นตอนต่อ ไป ของเราคือการศึกษาภาษาสำหรับฐานข้อมูลเชิงสัมพันธ์ — SQL ฐานข้อมูลเป็นที่เก็บข้อมูล (ข้อมูล) ที่ใช้โดยเว็บแอปพลิเคชัน ฐานข้อมูลประกอบด้วยหลายตาราง (สมุดที่อยู่ในโทรศัพท์ของคุณเป็นตัวอย่างง่ายๆ) นักพัฒนา Java มีหน้าที่รับผิดชอบไม่เพียงแต่กับแอปพลิเคชัน Java เท่านั้น แต่ยังรวมถึงฐานข้อมูลที่โต้ตอบด้วยและตำแหน่งที่เก็บข้อมูลด้วย ในฐานข้อมูลเชิงสัมพันธ์ (ซึ่งเป็นประเภทที่พบมากที่สุด) การโต้ตอบทั้งหมดเกิดขึ้นผ่านภาษาพิเศษที่เรียกว่า Structured Query Language หรือ SQL เพื่อทำความเข้าใจหัวข้อนี้ สิ่งที่คุณต้องทำคืออ่านหนังสือเหล่านี้:- "การเรียนรู้ SQL" โดย Alan Beaulieu;
- "SQL" โดย Chris Fehily;
- "Head First SQL" โดย Lynn Beighley