Python डेवलपर इंटरव्यू सवाल

चालीस गीगाबाइट की CSV जो मेमोरी में नहीं समाएगी, उसे आप कैसे process करेंगे?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

उसे stream करें। फाइल खोलकर लाइन दर लाइन इटरेट करें, या file object पर csv.reader इस्तेमाल करें, ताकि एक समय पर सिर्फ एक row मेमोरी में रहे, और हर record को बीच की लिस्टें बनाने के बजाय generator stages से गुजारें। destination पर writes को कुछ हजार के बैच में करें। अगर काम CPU bound हो तो फाइल को byte ranges में बांटकर कई processes में डालें।

इंटरव्यूअर यह क्यों पूछते हैं

यह जांचता है कि streaming आपकी सहज आदत है या बाद की सोच। इंटरव्यूअर ऐसे बहुत कैंडिडेट देखते हैं जो आदतन pandas read_csv उठा लेते हैं और फिर पाते हैं कि container kill हो गया। वे ऑपरेशनल सोच भी सुनना चाहते हैं: दोबारा शुरू कर पाना, प्रगति पर नजर, writes को बैच करना, और यह जानना कि कब सही जवाब Python छोड़कर फाइल को डेटाबेस में लोड कर देना है।

अपना जवाब कैसे स्ट्रक्चर करें

  • लोड करने के बजाय streaming पर टिकें।
  • generator pipeline और बैच वाले writes बताएं।
  • दोबारा शुरू करने की सुविधा और प्रगति की रिपोर्टिंग जोड़ें।
  • बताएं कि आप इसे किसी दूसरे टूल को कब सौंप देंगे।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

कुछ भी पूरा लोड नहीं होता। file object पहले से लाइनों पर एक iterator है, तो मैं csv.reader से row दर row पढ़ता हूं और parsing, filtering और transforming के लिए generator stages जोड़ता हूं, जिससे फाइल के साइज से बेपरवाह peak memory लगभग एक record पर रहती है। writes बैच में जाते हैं, आम तौर पर हर insert में कुछ हजार rows, क्योंकि हर row पर Postgres तक जाना बाकी सब पर भारी पड़ता है। चालीस गीगाबाइट में वक्त लगता है, इसलिए मैं इसे दोबारा शुरू करने लायक बनाता हूं: byte offset या आखिरी process हुई key एक छोटी state file में रखता हूं, हर लाख rows पर प्रगति लॉग करता हूं, और upsert से write को idempotent बनाता हूं ताकि दोबारा चलाने पर डुप्लिकेट न बनें। अगर अड़चन I/O की जगह parsing निकले तो मैं फाइल को byte offsets पर बांटकर ranges एक process pool को देता हूं, यह ध्यान रखते हुए कि सीमाएं लाइन पर संरेखित हों। सच कहूं तो मेरा पहला सुझाव अक्सर यह होता है कि लोड के लिए Python छोड़ दें और डेटाबेस का bulk copy इस्तेमाल करें, फिर transformation SQL में करें, क्योंकि वह आम तौर पर दस गुना तेज होता है।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • बीच stream में खराब rows को कैसे संभालते हैं?
  • क्या polars या duckdb आपका जवाब बदल देंगे?
  • इस process को ठीक एक बार वाली रीस्टार्ट क्षमता कैसे देंगे?

Python डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं