डेटा एनालिस्ट इंटरव्यू सवाल

आप subquery की जगह CTE कब इस्तेमाल करेंगे?

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

छोटा जवाब

CTE तब इस्तेमाल करें जब पढ़ने लायक होना मायने रखता हो या जब वही बीच का नतीजा एक से ज्यादा बार इस्तेमाल हो, क्योंकि वह किसी कदम को घोंसले में डालने के बजाय उसे नाम देता है। किसी अकेले छोटे inline filter के लिए subquery ठीक है। ज्यादातर आधुनिक engine पर परफॉर्मेंस लगभग बराबर है, हालांकि कुछ CTE को materialize करते हैं और कुछ inline, तो CTE अपने आप ही उसी nested query से तेज या धीमा नहीं होता।

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

यह कुछ हुनर का सवाल है और कुछ मिथक की जांच, क्योंकि बहुत से कैंडिडेट पूरे भरोसे से दावा करते हैं कि CTE तेज होते हैं या हमेशा materialize होते हैं। इंटरव्यूअर वह ईमानदार जवाब चाहते हैं कि मुख्य फायदा पढ़ने लायक होना और दोबारा इस्तेमाल है, साथ में यह समझ कि engine इनकी योजना अलग अलग बनाते हैं, और यह कि recursive CTE ऐसी hierarchy की समस्याएं हल करते हैं जो सादा subquery नहीं कर सकता।

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

  • असली वजहों के तौर पर पढ़ने लायक होना और दोबारा इस्तेमाल से शुरू करें।
  • इस मिथक को सुधारें कि CTE स्वाभाविक रूप से तेज होते हैं।
  • materialization में engine के फर्क का जिक्र करें।
  • hierarchy के लिए recursive CTE का जिक्र करें।
  • बताएं कि सादा subquery कब सचमुच बेहतर चुनाव है।

उदाहरण जवाब

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

ज्यादातर पढ़ने लायक होने और दोबारा इस्तेमाल के लिए। अगर किसी query में चार तार्किक कदम हैं, तो चार नाम वाले CTE एक पैराग्राफ की तरह पढ़े जाते हैं और रिव्यू करने वाला तर्क का पीछा कर सकता है, जबकि तीन परत की nested subquery का मतलब है बीच से शुरू करके बाहर की तरफ काम करना। दूसरी असली वजह है उसी बीच के समूह को दोहराए बिना दो बार इस्तेमाल करना। जो मैं दावा नहीं करूंगा वह यह है कि CTE तेज होते हैं। यह मिथक हर जगह है। engine और version के हिसाब से कोई CTE plan में inline हो सकता है या एक बार materialize हो सकता है, और यह इस पर निर्भर है कि उसे कितनी बार इस्तेमाल किया गया और वह कितना selective है, दोनों में से कोई भी तेज विकल्प हो सकता है। Postgres में version 12 से पहले CTE एक optimization fence थे, जिससे वे कभी कभी नाटकीय रूप से धीमे हो जाते थे, इसलिए जब परफॉर्मेंस सचमुच मायने रखती है तो मैं plan देख लेता हूं। CTE जहां अनोखे तौर पर काम का है वह है recursion: किसी manager की hierarchy या category के पेड़ पर चलना recursive CTE से सीधा है और उसके बिना सचमुच अजीब।

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

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

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

  • recursive CTE क्या है और आप उसे किस काम में लेंगे?
  • कोई CTE आपके query plan को नुकसान पहुंचा रहा है, यह आप कैसे जांचेंगे?
  • कोई temporary table CTE से बेहतर कब होगा?

डेटा एनालिस्ट के और सवाल

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

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

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

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

GhostPilot पाएं