คำถามและคำตอบสัมภาษณ์ Servlet 24 อันดับแรก
เผยแพร่แล้ว: 2021-06-03เซิร์ฟเล็ตเป็นซอฟต์แวร์ที่ใช้ Java ซึ่งขยายขีดความสามารถของเซิร์ฟเวอร์ เป็นองค์ประกอบสำคัญของเซิร์ฟเวอร์ใด ๆ ที่ตอบสนองต่อคำขอคอนเทนเนอร์และสำหรับการโฮสต์เว็บแอปพลิเคชัน ในการเรียกใช้ส่วนหลังของเว็บไซต์หรือที่เรียกว่าฝั่งเซิร์ฟเวอร์ คุณจะต้องทำความคุ้นเคยกับเซิร์ฟเล็ตและวิธีการทำงาน
เนื่องจากเซิร์ฟเวอร์ที่ใช้ Java เป็นที่นิยมอย่างมาก การเรียนรู้เกี่ยวกับเซิร์ฟเล็ตจึงเป็นสิ่งจำเป็น หากคุณต้องการทำงานกับเว็บเซิร์ฟเวอร์
หากคุณกำลังเตรียมสัมภาษณ์นักพัฒนา คุณมาถูกที่แล้ว คำถามสัมภาษณ์เซิร์ฟเล็ตต่อไปนี้จะทำให้คุณทราบถึงสิ่งที่คาดหวังจากการสัมภาษณ์
สารบัญ
รายชื่อคำถามสัมภาษณ์ Servlet ยอดนิยม
- คุณหมายถึงอะไรโดย Servlet?
ตอบ: เซิร์ฟเล็ตเป็นเทคโนโลยี Java และคอนเทนเนอร์ที่จัดการสิ่งเหล่านี้เรียกว่าเอ็นจินเซิร์ฟเล็ต เซิร์ฟเล็ตสร้างเนื้อหาแบบไดนามิกและโต้ตอบกับไคลเอนต์ผ่านคำขอและการตอบสนอง โดยปกติแล้วจะทำงานเมื่อคุณคลิกลิงก์หรือดำเนินการใดๆ บนเว็บไซต์ Servlets นั้นคล้ายกับแอพเพล็ต แต่ความแตกต่างคือพวกมันถูกประมวลผลบนเซิร์ฟเวอร์ในขณะที่แอพเพล็ตถูกประมวลผลบนเครื่องของลูกค้า
- คอนเทนเนอร์เซิร์ฟเล็ตคืออะไร?
ตอบ: คอนเทนเนอร์เซิร์ฟเล็ตเป็นส่วนหนึ่งของเว็บเซิร์ฟเวอร์ที่ให้บริการเครือข่าย พวกเขาขึ้นอยู่กับคำขอและการตอบสนองตาม MIME คอนเทนเนอร์เซิร์ฟเล็ตจัดการกับเซิร์ฟเล็ต
- ทำไมเราถึงใช้เซิร์ฟเล็ต?
ตอบ: โดยปกติ เราใช้เซิร์ฟเล็ตเนื่องจากไม่ขึ้นกับแพลตฟอร์ม ยิ่งไปกว่านั้น พวกมันยังถูกคอมไพล์เป็นโค้ดไบต์ที่เป็นกลางของแพลตฟอร์ม คุณสามารถโหลดโค้ด Java byte แบบไดนามิกลงในเว็บเซิร์ฟเวอร์ที่เปิดใช้งาน Java
- คุณหมายถึงอะไรโดยตัวกรอง?
คำตอบ: ตัวกรองเป็นโค้ดที่นำมาใช้ซ้ำได้ซึ่งสามารถแปลงเนื้อหาของคำขอ HTTP การตอบสนอง และส่วนหัว
- แอปพลิเคชันเซิร์ฟเวอร์และเว็บเซิร์ฟเวอร์ต่างกันอย่างไร
ตอบ: เว็บเซิร์ฟเวอร์จัดการคำขอ HTTP จากเบราว์เซอร์ไคลเอ็นต์และตอบกลับด้วยการตอบสนอง HTML มันประมวลผลภาษา HTTP และทำงานบนโปรโตคอล HTTP
ในทางกลับกัน แอปพลิเคชันเซิร์ฟเวอร์มีคุณสมบัติเพิ่มเติม เช่น รองรับ JMS Messaging, รองรับ Enterprise JavaBeans เป็นต้น พร้อมด้วยฟังก์ชันพื้นฐานของเว็บเซิร์ฟเวอร์
- คุณหมายถึงอะไรโดยเซสชั่น?
ตอบ เซสชัน หมายถึง ช่วงเวลาหนึ่ง ในเซิร์ฟเล็ต เซสชันคืออ็อบเจ็กต์ที่เซิร์ฟเล็ตใช้เพื่อติดตามการโต้ตอบของผู้ใช้กับเว็บแอปพลิเคชันผ่านคำขอ HTTP หลายรายการ
- คุณหมายถึงอะไรโดยบริบทของเซิร์ฟเล็ต?
ตอบ: บริบทของเซิร์ฟเล็ตกำหนดชุดของวิธีการที่เซิร์ฟเล็ตใช้ในการสื่อสารกับคอนเทนเนอร์เซิร์ฟเล็ต คอนเทนเนอร์เซิร์ฟเล็ตสร้างวัตถุนี้เพื่อแชร์การกำหนดค่าเริ่มต้นหรือพารามิเตอร์กับแอปพลิเคชันทั้งหมด
คุณสามารถรับวัตถุ ServletContext โดยใช้เมธอด getServletContext() มีบริบทเซิร์ฟเล็ตเดียวเท่านั้นสำหรับแอปพลิเคชัน คุณสามารถใช้ ServletContext เพื่อแบ่งปันข้อมูลในแอปพลิเคชันทั้งหมด
หมายเหตุ: นี่เป็นหนึ่งในคำถามและคำตอบในการสัมภาษณ์เซิร์ฟเล็ตที่สำคัญที่สุด
- การแมปเซิร์ฟเล็ตหมายความว่าอย่างไร
ตอบ: การแมปเซิร์ฟเล็ตช่วยให้คุณมีเว็บคอนเทนเนอร์เฉพาะซึ่งจาวาเซิร์ฟเล็ตควรถูกเรียกใช้สำหรับ URL เฉพาะ มันจะแมปรูปแบบ URL กับเซิร์ฟเล็ต เมื่อไคลเอนต์ส่งคำขอ คอนเทนเนอร์เซิร์ฟเล็ตจะกำหนดว่าแอปพลิเคชันใดที่จะส่งต่อ และระบบจะจับคู่พาธบริบทเพื่อดำเนินการแมปเซิร์ฟเล็ต
- คุณจะรีเฟรชโดยอัตโนมัติหลังจากป้อนข้อมูลใหม่ลงในฐานข้อมูลได้อย่างไร
ตอบ: คุณสามารถใช้รีเฟรชในการพุชเซิร์ฟเวอร์และฝั่งไคลเอ็นต์เพื่อรีเฟรชโดยอัตโนมัติเมื่อป้อนข้อมูลใหม่ลงในฐานข้อมูล
- อธิบายวงจรชีวิตของเซิร์ฟเล็ต
ตอบ: วงจรชีวิตของเซิร์ฟเล็ตแบ่งออกเป็นห้าขั้นตอน ขั้นแรก คุณโหลดคลาสเซิร์ฟเล็ต จากนั้นสร้างอินสแตนซ์เซิร์ฟเล็ต หลังจากนั้น คุณเรียกใช้เมธอด init() ตามด้วยเมธอดบริการ และสุดท้ายเมธอด destroy() เซิร์ฟเล็ตมีสามสถานะ: ใหม่ พร้อม และสิ้นสุด
เซิร์ฟเล็ตจะอยู่ในสถานะใหม่เมื่อถูกสร้างขึ้น มันจะเข้าสู่สถานะพร้อมหลังจากที่คุณเรียกใช้เมธอด init() ในที่สุด มันจะเข้าสู่สถานะสิ้นสุดเมื่อมีการเรียกใช้เมธอด destroy()
- มีการเพิ่มคุณสมบัติใหม่ใดบ้างใน Servlet 2.5
ตอบ: Servlet 2.5 มาพร้อมกับคุณสมบัติใหม่ดังต่อไปนี้:
- การพึ่งพา J2SE 5.0
- รองรับคำอธิบายประกอบ
- คลาสโหลด
- เว็บใหม่.xml
- การชี้แจงกรณีขอบ
- การลบข้อจำกัด
- เซิร์ฟเล็ตทั้งหมดใช้อินเทอร์เฟซใด (หรือควรนำไปใช้)
ตอบ: เซิร์ฟเล็ตทั้งหมดต้องใช้อินเตอร์เฟสเซิร์ฟเล็ต
- เซิร์ฟเล็ตโหลดเมื่อใด
ตอบ: เซิร์ฟเล็ตถูกโหลดเมื่อ:
- มีการร้องขอครั้งแรก
- เซิร์ฟเวอร์และการเริ่มต้นการโหลดอัตโนมัติ
- อินสแตนซ์เดียวตอบคำขอทั้งหมดพร้อมกัน ดังนั้นจึงช่วยประหยัดหน่วยความจำ
- ผู้ดูแลระบบโหลดด้วยตนเอง
- เซิร์ฟเล็ตจะยกเลิกการโหลดเมื่อใด
ตอบ: เซิร์ฟเล็ตจะถูกยกเลิกการโหลดเมื่อเซิร์ฟเวอร์ปิดตัวลงหรือผู้ดูแลระบบยกเลิกการโหลดด้วยตนเอง
- คุณหมายถึงอะไรโดยประเภท MIME?
ตอบ: MIME ย่อมาจาก Multipurpose Internet Mail Extension ประเภท MIME คือส่วนหัว HTTP ที่ให้ข้อมูลเกี่ยวกับสิ่งที่เรากำลังส่งไปยังเบราว์เซอร์ ช่วยลูกค้าในการแสดงข้อมูล ประเภท MIME ทั่วไป ได้แก่ ข้อความ (HTML) ข้อความ (ธรรมดา) รูปภาพ (jpeg) แอปพลิเคชัน (ขวดโหล) เป็นต้น
เพื่อให้ได้ไฟล์ประเภท MIME ที่ถูกต้อง คุณสามารถใช้เมธอด ServletContext getMimeType() มีประโยชน์ในขณะดาวน์โหลดไฟล์ผ่านเซิร์ฟเล็ตจากเซิร์ฟเวอร์
- วิธี POST และ GET แตกต่างกันอย่างไร
คำตอบ: ความแตกต่างหลักระหว่างวิธี POST และ GET คือวิธี POST นำพารามิเตอร์การตอบสนองในเนื้อหาของข้อความ ในขณะที่วิธี GET จะนำพารามิเตอร์ตอบกลับมาต่อท้ายสตริง URL
- คุณหมายถึงอะไรโดยแอปพลิเคชันเว็บ?
ตอบ: เว็บแอปพลิเคชันคือโมดูลที่ทำงานบนเซิร์ฟเวอร์เพื่อจัดเตรียมเนื้อหาแบบไดนามิกและแบบคงที่ให้กับเบราว์เซอร์ไคลเอ็นต์ เว็บเซิร์ฟเวอร์ Apache รองรับ PHP และคุณสามารถสร้างเว็บแอปพลิเคชันได้โดยใช้สิ่งเดียวกัน
Java รองรับเว็บแอปพลิเคชันผ่าน JSP และเซิร์ฟเล็ตที่ทำงานในคอนเทนเนอร์เซิร์ฟเล็ตเสนอเนื้อหาแบบไดนามิกไปยังเบราว์เซอร์ไคลเอนต์
- เซิร์ฟเล็ตมีข้อดีอะไรเหนือ CGI?
ตอบ: เทคโนโลยี CGI มีข้อบกพร่องหลายประการ Servlets ถูกนำมาใช้เพื่อเอาชนะสิ่งเดียวกัน
Servlets ให้ประสิทธิภาพที่ดีกว่า CGI ในแง่ของการใช้หน่วยความจำและเวลาในการประมวลผล พวกเขาใช้ประโยชน์จากมัลติเธรดดิ้ง ซึ่งจะสร้างเธรดใหม่สำหรับทุกคำขอ ซึ่งช่วยเพิ่มความเร็วได้อย่างมาก ในทางตรงกันข้าม CGI จะสร้าง Object ใหม่สำหรับทุกคำขอ ซึ่งค่อนข้างช้ากว่ากระบวนการของเซิร์ฟเล็ต
Servlets เป็นระบบและไม่ขึ้นกับแพลตฟอร์ม คุณสามารถเรียกใช้เว็บแอปพลิเคชันแบบเซิร์ฟเล็ตบนคอนเทนเนอร์เว็บมาตรฐานใดก็ได้ (Glassfish, Tomcat และ JBoss) และระบบปฏิบัติการ (Unix, Windows, Mac เป็นต้น)
เส้นโค้งการเรียนรู้สำหรับเซิร์ฟเล็ตนั้นค่อนข้างเล็ก เนื่องจากคุณจำเป็นต้องจัดการตรรกะทางธุรกิจสำหรับแอปพลิเคชันเท่านั้น ยิ่งไปกว่านั้น คอนเทนเนอร์ของมันยังจัดการวงจรชีวิตของเซิร์ฟเล็ต ดังนั้นจึงไม่มีความเสี่ยงที่หน่วยความจำจะรั่ว การรวบรวมขยะ และความปลอดภัย
- คุณรู้อะไรเกี่ยวกับวัตถุ ServletConfig?
ตอบ: คุณใช้อ็อบเจ็กต์ ServletConfig เพื่อให้ข้อมูลการกำหนดค่าแก่เซิร์ฟเล็ตเฉพาะ แต่ละเซิร์ฟเล็ตมีอ็อบเจ็กต์ ServletConfig ที่ไม่ซ้ำกัน และคอนเทนเนอร์เซิร์ฟเล็ตจะสร้างอินสแตนซ์ คุณสามารถกำหนดพารามิเตอร์ init ของเซิร์ฟเล็ตผ่านคำอธิบายประกอบ WebInitParam ในการรับวัตถุ ServletConfig ของเซิร์ฟเล็ต คุณต้องใช้เมธอด getServletConfig()
- โดยปกติคอนเทนเนอร์เซิร์ฟเล็ตทำหน้าที่อะไร?
ตอบ: คอนเทนเนอร์เซิร์ฟเล็ตทำงานต่อไปนี้:
- อำนวยความสะดวกในการสื่อสารระหว่างเซิร์ฟเล็ต, JSP และเว็บไคลเอ็นต์ คุณไม่จำเป็นต้องสร้างซ็อกเก็ตเซิร์ฟเวอร์เพื่อรับคำขอ แยกวิเคราะห์ และสร้างการตอบสนองเนื่องจากคอนเทนเนอร์ คอนเทนเนอร์ดูแลงานเหล่านี้ ช่วยให้คุณมุ่งเน้นไปที่ตรรกะทางธุรกิจ
- คอนเทนเนอร์เซิร์ฟเล็ตจัดการวงจรชีวิตของเซิร์ฟเล็ต มันโหลดเซิร์ฟเล็ตลงในหน่วยความจำ เริ่มต้น เรียกใช้เมธอดที่จำเป็น และทำลายมัน คอนเทนเนอร์ Servlet ยังช่วยลดความยุ่งยากในการจัดการทรัพยากรด้วยการนำเสนอยูทิลิตี้ เช่น JNDI
- คอนเทนเนอร์ Servlet สร้างเธรดใหม่สำหรับทุกคำขอและให้คำขอเซิร์ฟเล็ตและวัตถุตอบสนอง ด้วยวิธีนี้ คุณไม่จำเป็นต้องเริ่มต้นเซิร์ฟเล็ตสำหรับทุกคำขอ ซึ่งช่วยประหยัดหน่วยความจำและเวลาได้มาก
- Servlets รวบรวม JSP และแปลงเป็น servlets เพื่อจัดการเช่น servlets ทำให้งานของคุณง่ายขึ้น
- คุณหมายถึงอะไรโดยผู้ส่งคำขอ?
ตอบ: คุณใช้อินเทอร์เฟซ RequestDispatcher เพื่อส่งต่อคำขอไปยังทรัพยากรอื่น ทรัพยากรนี้อาจเป็นเซิร์ฟเล็ตอื่นในแอปพลิเคชัน HTML หรือ JSP คุณสามารถใช้อินเทอร์เฟซ RequestDispatcher เพื่อเพิ่มเนื้อหาของทรัพยากรอื่นในการตอบกลับของคุณ เป็นโซลูชั่นที่ยอดเยี่ยมสำหรับการสื่อสารระหว่างเซิร์ฟเล็ต
คุณสามารถกำหนดสองวิธีในอินเทอร์เฟซ RequestDispatcher:
- วิธีการส่งต่อเป็นโมฆะ มันส่งต่อการร้องขอจากเซิร์ฟเล็ตหนึ่งไปยังรีซอร์สอื่น
- โมฆะรวมถึงวิธีการ จะเพิ่มเนื้อหาของแหล่งข้อมูลอื่นในการตอบกลับของคุณ
- อะไรคือความแตกต่างระหว่าง ServletContext และ ServletConfig?
ตอบ: ServletContext เป็นอ็อบเจ็กต์ที่ไม่ซ้ำกันสำหรับแอปพลิเคชันทั้งหมด ในขณะที่ ServletConfig เป็นอ็อบเจ็กต์ที่ไม่ซ้ำกันสำหรับเซิร์ฟเล็ต คุณสามารถใช้ ServletContext เพื่อให้พารามิเตอร์ init ทั่วทั้งแอปพลิเคชันที่สมบูรณ์ ซึ่งเซิร์ฟเล็ตทั้งหมดสามารถใช้งานได้ ในทางกลับกัน คุณสามารถใช้ ServletConfig เพื่อจัดเตรียมพารามิเตอร์ init ให้กับเซิร์ฟเล็ตที่ระบุเท่านั้น
คุณสามารถตั้งค่าแอตทริบิวต์ใน ServletContext ซึ่งเซิร์ฟเล็ตอื่นสามารถใช้ได้ แต่คุณไม่สามารถเลือกแอตทริบิวต์ใน ServletConfig
หมายเหตุ : นี่เป็นหนึ่งในคำถามและคำตอบในการสัมภาษณ์เซิร์ฟเล็ตที่สำคัญที่สุด คุณควรเตรียมมันอย่างระมัดระวัง
- คุณรู้อะไรเกี่ยวกับคุณสมบัติของเซิร์ฟเล็ต?
ตอบ: คุณลักษณะ Servlet ช่วยคุณในการสื่อสารระหว่างเซิร์ฟเล็ต คุณสามารถตั้งค่า รับ และลบแอตทริบิวต์ในแอปพลิเคชันได้ แอตทริบิวต์ของเซิร์ฟเล็ตมีสามขอบเขต ขอบเขตคำขอ ขอบเขตเซสชัน และขอบเขตแอปพลิเคชัน กล่าวคือ แตกต่างจากพารามิเตอร์ init
- คุณจะเรียก servlet จาก servlet อื่นได้อย่างไร?
ตอบ: คุณสามารถใช้ RequestDispatcher forward() เพื่อส่งต่อการประมวลผลคำขอไปยังเซิร์ฟเล็ตอื่น หากคุณต้องการเพิ่มเอาต์พุตเซิร์ฟเล็ตอื่นในการตอบกลับ คุณสามารถใช้เมธอด RequestDispatcher include()
เรียนรู้ หลักสูตรซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
บทสรุป
คำถามและคำตอบในการสัมภาษณ์เซิร์ฟเล็ตข้างต้นน่าจะช่วยให้คุณเข้าใจว่าคำถามประเภทใดที่การสัมภาษณ์จะถามคุณ เราขอแนะนำให้บุ๊กมาร์กหน้านี้ไว้ เพื่อให้คุณสามารถกลับมาดูภายหลังและแก้ไขคำถามได้หลายครั้ง
พยายามสงบสติอารมณ์ขณะสัมภาษณ์ มันจะช่วยให้คุณฟังคำถามอย่างใกล้ชิดและตอบคำถามตามนั้น คุณสามารถตรวจสอบ Executive PG Program ใน การพัฒนาซอฟต์แวร์ด้วยความเชี่ยวชาญในการพัฒนา Full Stack เพื่อเรียนรู้แนวคิดขั้นสูงเพิ่มเติมเกี่ยวกับ Java และวิชาที่เกี่ยวข้อง
เซิร์ฟเล็ตใน Java คืออะไร?
เซิร์ฟเล็ตเป็นคลาส Java ที่สามารถเรียกใช้โดยเซิร์ฟเวอร์ HTTP โดยทั่วไปแล้ว Servlets จะใช้ในการพัฒนาเว็บแอปพลิเคชัน วัตถุประสงค์หลักของเซิร์ฟเล็ตคือการจัดการคำขอจากไคลเอนต์ HTTP และเพื่อส่งคืนการตอบกลับที่เหมาะสม มีเซิร์ฟเล็ตหลายประเภท แต่ประเภทที่ได้รับความนิยมมากที่สุดคือ Java Server Pages (JSP) เนื่องจากสามารถใช้สร้างเนื้อหาเว็บแบบไดนามิกได้
การตอบสนองต่อคำขอในเซิร์ฟเล็ต Java ทำงานอย่างไร
เซิร์ฟเวอร์ใช้เซิร์ฟเล็ตเพื่อตอบสนองต่อการร้องขอจากผู้ใช้ สามารถใช้เซิร์ฟเล็ตเพื่อดาวน์โหลดข้อมูลจากฐานข้อมูล ส่งอีเมล หรือแสดงข้อมูล เป็นโปรแกรมขนาดเล็กที่ทำงานเฉพาะสำหรับเซิร์ฟเวอร์ เซิร์ฟเล็ตเขียนด้วยภาษาจาวาและคอมไพล์เป็นไฟล์คลาสเดียว จากนั้นนำไปปรับใช้กับเว็บเซิร์ฟเวอร์ เมื่อปรับใช้แล้ว เซิร์ฟเล็ตก็พร้อมที่จะรับคำขอจากผู้ใช้ คำขอสามารถเป็นอะไรก็ได้ตั้งแต่ผู้ใช้คลิกลิงก์ไปยังผู้ใช้ที่กรอกแบบฟอร์ม คำขอจะถูกส่งไปยังเซิร์ฟเวอร์ที่ถูกกำหนดเส้นทางไปยังเซิร์ฟเล็ตที่เหมาะสม จากนั้นเซิร์ฟเล็ตจะประมวลผลคำขอและส่งการตอบกลับกลับมา การตอบสนองนี้อาจแตกต่างกันไปขึ้นอยู่กับประเภทของคำขอ ตัวอย่างเช่น หากผู้ใช้ร้องขอข้อมูล เซิร์ฟเล็ตสามารถส่งคืนข้อมูลนั้นให้กับผู้ใช้ได้ หากเซิร์ฟเล็ตตอบสนองต่อคำขอแบบฟอร์ม เซิร์ฟเวอร์อาจส่งอีเมลยืนยันไปยังผู้ใช้หรือการแจ้งเตือนเกี่ยวกับการส่ง
วงจรชีวิตของเซิร์ฟเล็ตคืออะไร?
เซิร์ฟเล็ตสามารถกล่าวได้ว่ามีสามขั้นตอนในวงจรชีวิต: 1. กำลังโหลด 2. การดำเนินการ 3. การทำลาย ในระหว่างการโหลด เซิร์ฟเล็ตจะได้รับพารามิเตอร์การกำหนดค่าเริ่มต้น พารามิเตอร์เหล่านี้ถูกกำหนดไว้ในตัวอธิบายการปรับใช้ เมื่อการโหลดเสร็จสิ้น คอนเทนเนอร์เซิร์ฟเล็ตสามารถเรียกเซิร์ฟเล็ตได้หลายวิธี - โดยการเรียกเมธอด init() โดยการเรียก ajax หรือโดยเหตุการณ์วงจรชีวิต ขั้นต่อไปและขั้นสุดท้ายคือการทำลาย กล่าวคือ เมื่อเอาเซิร์ฟเล็ตออกจากคอนเทนเนอร์ มีหลายวิธีในการลบเซิร์ฟเล็ตออกจากคอนเทนเนอร์เซิร์ฟเล็ต เช่น เมื่อคอนเทนเนอร์หยุดทำงาน หรือเมื่อเว็บแอปพลิเคชันหยุดทำงาน