การจัดเก็บองค์ประกอบ 5,000 รายการในฝั่งไคลเอ็นต์ในเว็บแอปพลิเคชัน [ปิด]


12

ฉันเพิ่งได้รับการสัมภาษณ์ทางโทรศัพท์สำหรับนักพัฒนา ASP.Net หลังจากสิ่งเบื้องต้นเบื้องต้นผู้สัมภาษณ์ถามคำถามทางเทคนิคแรก:

"คุณจะจัดเก็บองค์ประกอบ 5000 รายการในฝั่งไคลเอ็นต์สำหรับผู้ใช้แต่ละรายในเว็บแอปพลิเคชันได้อย่างไร"

คำตอบของฉันเริ่มต้นด้วย

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

คำตอบของเขาคือ "ไม่คุณบอกฉันว่าคุณจะเก็บไว้ในฝั่งไคลเอ็นต์อย่างไรโดยพิจารณาว่าแต่ละองค์ประกอบเป็นเร็กคอร์ดที่มีประมาณ 8 ฟิลด์รวมถึง int / string แถวตารางปกติ"

ฉันพูดว่า "อาจเก็บไว้ในเซสชัน แต่เนื่องจากเซสชันถูกเก็บรักษาไว้ที่ฝั่งเซิร์ฟเวอร์สำหรับผู้ใช้แต่ละรายอาจมีราคาแพงหรือตัวเลือกอื่นคือเก็บข้อมูลจำนวนมากในคุกกี้" ฉันยังบอกด้วยว่าฉันไม่ ตรวจสอบว่าข้อมูลจำนวนมากสามารถเก็บไว้ในคุกกี้ได้หรือไม่ ฉันพูดถึงตัวเลือกที่เก็บ HTML5 อยู่ที่นั่น แต่ฉันไม่ได้ทำงานด้วย เพราะมันอยู่บนพื้นฐานของข้อมูล SQLite ก็สามารถเก็บข้อมูลมากที่ในทางทฤษฎี

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

ฉันสงสัยว่าฉันทำอะไรผิด หรือมีบางสิ่งพื้นฐานจริง ๆ ที่ฉันขาดไปเกี่ยวกับการจัดเก็บข้อมูลทางฝั่งไคลเอ็นต์


14
ฉันเดาว่าเขากำลังมองหาที่จัดเก็บในตัว html5แม้ว่ามันจะดูเหมือนว่าคุณพูดถึงมัน อาจเป็นเพราะผู้สัมภาษณ์เป็นคนฉ้อฉลและ / หรือเข้าใจผิดคุณ
Gort the Robot

1
มีการให้คำจำกัดความสำหรับองค์ประกอบ 'ที่ควรจะเป็นหรือไม่? ฉันไม่คิดว่าคุณทำอะไรผิดคำถามนั้นคลุมเครือ
GrandmasterB

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

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

2
"ฉันทำผิดอะไร?" จากความคิดเห็นและทัศนคติของเขานำไปใช้กับ บริษัท นี้: นั่นคือสิ่งที่ผู้สัมภาษณ์พูดประชดประชันค่อนข้างมากดังนั้นคุณจึงมีประสบการณ์ 3 ปีในการพัฒนาเว็บและยุติการสัมภาษณ์
Francisco Presencia

คำตอบ:


10

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

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

ทำไม?

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

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

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

สำหรับหน่วยเก็บข้อมูลในท้องถิ่นนั้นเอง - ตามที่ฉันได้กล่าวไปแล้วก่อนหน้านี้ HTML5 ซึ่งเป็นข้อมูลจำเพาะนั้นมีมานานประมาณสามปีเท่านั้นและนั่นก็ใจดีและนับเป็นร่าง จากนั้นคุณมีปัญหาเกี่ยวกับการสนับสนุนเบราว์เซอร์ซึ่งอาจมีหรือไม่มีประวัติที่ยาวนาน (ตัวอย่างเช่นในขณะที่คู่ค่าชื่อได้รับการสนับสนุนกันอย่างแพร่หลายก่อนที่จะมีการแข็งตัวของ HTML5, IndexedDB และ Web SQL DB ยังคงเป็นภาพร่าง )

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

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


7

คำตอบ 'ถูกต้อง' - อย่างน้อยสิ่งที่พวกเขากำลังมองหา - คือHTML5 LocalStorage (ลิงก์ที่ยอดเยี่ยมโดย Steven Burnap) และผู้สัมภาษณ์อาจจะเป็น ... อืมฉันเชื่อว่าวลีทางเทคนิคคือ " ลูกบิดสักหน่อย"

โดยทั่วไปแล้วกระบวนการกำจัดคุกกี้จะไม่สามารถอยู่ใกล้กับที่ใด ๆ ได้มากพอเซสชันจะอยู่ฝั่งเซิร์ฟเวอร์และไม่ใช่ช่างที่เก็บข้อมูลฝั่งไคลเอนต์เลย ฯลฯ ผู้สัมภาษณ์คิดว่านี่เป็นความรู้ทั่วไปและคุณ ควรรู้ซึ่งเป็นเรื่องตลกที่คุณต้องใช้ความสามารถของ HTML5 LocalStorage โดยทั่วไปในการทำงานของ data-heavy UI ซึ่งเป็นข้อยกเว้นมากกว่ากฎ คนสามารถตั้งโปรแกรมเป็นเวลาหลายปีและไม่จำเป็นต้องใช้คุณลักษณะในขณะที่คนอื่นอาจมีความต้องการในโครงการแรกของพวกเขา

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

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

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

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

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