React Native

การเพิ่มประสิทธิภาพ

การเพิ่มประสิทธิภาพ FlatList, memo, useMemo/useCallback, Hermes, การทำ profiling, ขนาด bundle

24 คำถามสัมภาษณ์·
Senior
1

บทบาทหลักของ React.memo ในการเพิ่มประสิทธิภาพของ React Native คืออะไร?

คำตอบ

React.memo คือ Higher-Order Component ที่ทำการ memoize ผลลัพธ์การ render ของ functional component โดยจะป้องกันการ re-render ที่ไม่จำเป็นด้วยการเปรียบเทียบ props ปัจจุบันกับ props ก่อนหน้า (โดยค่าเริ่มต้นใช้ shallow comparison) หาก props ไม่เปลี่ยนแปลง React จะนำผลลัพธ์ที่ memoize ไว้กลับมาใช้แทนการ render component ใหม่ ซึ่งช่วยเพิ่มประสิทธิภาพอย่างมากในลิสต์หรือ component tree ที่ซับซ้อน

2

พร็อพเพอร์ตี้ใดของ FlatList ที่ช่วยเพิ่มประสิทธิภาพการเลื่อนอย่างมากด้วยการระบุขนาดของไอเทมล่วงหน้า?

คำตอบ

getItemLayout เป็นพร็อพเพอร์ตี้เสริมของ FlatList ที่ช่วยให้คำนวณความสูง ความกว้าง และ offset ของแต่ละองค์ประกอบไว้ล่วงหน้า ซึ่งช่วยให้ React Native ไม่ต้องวัดขนาดของแต่ละไอเทมแบบไดนามิก ทำให้ประสิทธิภาพการเลื่อนดีขึ้นอย่างมาก โดยเฉพาะเมื่อกระโดดไปยังดัชนีที่ระบุด้วย scrollToIndex การเพิ่มประสิทธิภาพนี้มีประโยชน์อย่างยิ่งเมื่อไอเทมทั้งหมดมีขนาดเท่ากัน

3

ความแตกต่างหลักระหว่าง useMemo และ useCallback ในแง่ของการเพิ่มประสิทธิภาพคืออะไร?

คำตอบ

useMemo จะ memoize ผลลัพธ์ของการคำนวณที่มีต้นทุนสูงและคืนค่าที่คำนวณได้นั้น ในขณะที่ useCallback จะ memoize ตัวฟังก์ชันเองและคืนฟังก์ชันนั้น useMemo มีประโยชน์ในการหลีกเลี่ยงการคำนวณซ้ำที่หนักในทุก ๆ การ render ส่วน useCallback จำเป็นอย่างยิ่งในการหลีกเลี่ยงการสร้างฟังก์ชันใหม่ที่ส่งเป็น props ไปยัง component ลูกที่ memoize ไว้ ซึ่งจะทำให้การเพิ่มประสิทธิภาพ React.memo ของ component เหล่านั้นเสียไป

4

Hermes คืออะไรและข้อได้เปรียบหลักของมันสำหรับแอปพลิเคชัน React Native คืออะไร?

5

เหตุใดการระบุฟังก์ชัน keyExtractor ที่เสถียรให้กับ FlatList จึงมีความสำคัญอย่างยิ่ง?

+21 คำถามสัมภาษณ์

หัวข้อสัมภาษณ์ React Native อื่นๆ

พื้นฐาน JavaScript

Junior
25 คำถาม

พื้นฐาน React

Junior
20 คำถาม

พื้นฐาน React Native

Junior
22 คำถาม

React Hooks

Junior
20 คำถาม

TypeScript สำหรับ React และ React Native

Junior
22 คำถาม

คอมโพเนนต์และ API ของ React Native

Junior
20 คำถาม

การจัดสไตล์และเลย์เอาต์ใน React Native

Junior
18 คำถาม

การนำทางใน React Native

Mid-Level
22 คำถาม

การจัดการ State ใน React Native

Mid-Level
24 คำถาม

Networking และ API ใน React Native

Mid-Level
20 คำถาม

การคงอยู่ของข้อมูล

Mid-Level
20 คำถาม

ฟอร์มและการตรวจสอบความถูกต้อง

Mid-Level
18 คำถาม

แอนิเมชัน React Native

Mid-Level
22 คำถาม

Native Modules & Bridge

Mid-Level
20 คำถาม

โค้ดเฉพาะแพลตฟอร์ม

Mid-Level
18 คำถาม

สิทธิ์และ Device API

Mid-Level
20 คำถาม

Push Notifications

Mid-Level
18 คำถาม

การทดสอบ React Native

Mid-Level
20 คำถาม

การ Debug React Native

Mid-Level
18 คำถาม

Build & Deployment

Mid-Level
20 คำถาม

Expo vs React Native Bare

Mid-Level
18 คำถาม

การจัดการหน่วยความจำ

Senior
20 คำถาม

Architecture Patterns

Senior
22 คำถาม

React Native New Architecture

Senior
24 คำถาม

แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย

Senior
20 คำถาม

Offline-First Architecture

Senior
20 คำถาม

CI/CD React Native

Senior
20 คำถาม

Monorepo และการแชร์โค้ด

Senior
18 คำถาม

หัวข้อขั้นสูง

Senior
22 คำถาม

วงจรชีวิตแอปและการทำงานเบื้องหลัง

Mid-Level
20 คำถาม

การยืนยันตัวตนและการจัดการเซสชัน

Mid-Level
22 คำถาม

Monitoring & Crash Reporting

Senior
20 คำถาม

เชี่ยวชาญ React Native สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี