SQL-interviewvragen voor ervaren professionals

Bronknooppunt: 1586233

SQL-interviewvragen voor ervaren professionals
 

Introductie

 
Als je een ervaren datawetenschapper bent en op zoek bent naar een baan, dan had je geen beter moment kunnen uitkiezen. Momenteel zijn veel gevestigde organisaties op zoek naar datawetenschappers die hun vak van binnen en van buiten kennen. De grote vraag betekent echter niet dat je door hoepels kunt of moet springen en naar hogere functies moet solliciteren zonder over bepaalde vaardigheden te beschikken. Wanneer ze ervaren datawetenschappers inhuren, verwachten bedrijven dat ze aan de moeilijkste taken werken. Deze werknemers moeten zelfs de meest obscure functies goed begrijpen, zodat ze deze kunnen gebruiken wanneer dat nodig is.

Het zou geen verrassing moeten zijn dat ervaren datawetenschappers bij sollicitatiegesprekken voor hogere functies veel moeilijkere vragen krijgen. Wanneer datawetenschappers een paar jaar aan één baan werken, worden ze vaak zeer bedreven in het uitvoeren van bepaalde repetitieve taken. Het is essentieel voor professionals om te beseffen dat SQL niet ophoudt bij hun bestaande kennis. Als het gaat om geavanceerde SQL-concepten, kunnen er nog enkele hiaten in hun kennis zitten. Het kan dus geen kwaad om hulp te krijgen voor het slagen van uw datawetenschapperinterview. 

SQL is de primaire taal voor het beheren van databases, dus het uitvoeren van SQL-bewerkingen vormt de kern van het werk van datawetenschappers. De meeste interviews met datawetenschappers worden georganiseerd om de kennis van SQL van een kandidaat te bepalen. 

Het dagelijkse werk omvat misschien niet het schrijven van complexe vragen, maar u moet laten zien dat als dergelijke vaardigheden nodig zijn, u de persoon bent die daartoe in staat is. Het zou dus geen verrassing moeten zijn dat interviewers een gevarieerde set van vragen stellen SQL-interviewvragen om de spreekvaardigheid van de kandidaat in SQL te testen.

In dit artikel wilden we enkele van de complexe vragen en concepten samenvatten die in interviews met ervaren professionals werden gesteld. Zelfs als u zeker bent van uw SQL-kennis, kan het geen kwaad om de trefwoorden te scannen en ervoor te zorgen dat u alles onder de knie heeft.

Minimale concepten voor ervaren professionals

GEVAL / WANNEER

 
Een grondig begrip van het concept van CASE (en de bijbehorende When-instructie) is essentieel voor het bereiken van volledige beheersing van SQL. Met een case-instructie kunnen we bepaalde voorwaarden controleren en een waarde retourneren op basis van de vraag of deze voorwaarden waar of onwaar zijn. In combinatie met clausules, zoals WHERE en ORDER BY, stelt CASE ons in staat logica, voorwaarden en volgorde in onze SQL-query's te brengen.

De waarde van CASE-instructies is niet beperkt tot het bieden van eenvoudige voorwaardelijke logica in onze query's. Ervaren datawetenschappers moeten meer dan oppervlakkig inzicht hebben in de CASE-instructie en het gebruik ervan. Interviewers zullen u waarschijnlijk vragen stellen over verschillende soorten CASE-expressies en hoe u deze moet schrijven. 

Ervaren kandidaten moeten bereid zijn theoretische vragen te beantwoorden, zoals het uitleggen van de verschillen tussen Valued en Searched CASE-statements, hoe ze werken en hoe ze te schrijven. Dit vereist een goed begrip van hun syntaxis en gebruikelijke praktijken. Uiteraard omvat dit ook het juiste gebruik van de ELSE-clausule.

Van ervaren datawetenschappers wordt verwacht dat ze weten hoe ze CASE ook met aggregatiefuncties moeten gebruiken. Mogelijk wordt u ook gevraagd een verkorte CASE-instructie te schrijven, die minder repetitief en gemakkelijker te begrijpen is. U zou op intelligente wijze moeten kunnen praten over voorbehouden en mogelijke risico's van het gebruik van verkorte CASE-instructies.

Over het algemeen moet een ervaren datawetenschapper CASE kunnen gebruiken om efficiëntere queries te schrijven. Het hele doel van de CASE-instructie is immers om te voorkomen dat er te veel individuele queries worden geschreven om de gegevens te consolideren.

Hier is een voorbeeld van de vraag die kan worden opgelost met behulp van CASE / WHEN-instructies: https://platform.stratascratch.com/coding/9634-host-response-rates-with-cleaning-fees?python= 

Dit is een moeilijke vraag die wordt gesteld in Airbnb-interviews, waarbij kandidaten het gemiddelde responspercentage van de verhuurder, de postcode en de bijbehorende schoonmaakkosten moeten achterhalen.

In dit geval wordt de instructie CASE/ WHEN gebruikt om het resultaat op te maken als een getal en weer te geven als een procentuele waarde, naast de postcode.

SQL sluit zich aan

 
Het is gemakkelijk om vertrouwen te hebben in uw kennis van SQL Joins, maar hoe meer u dit onderwerp verkent, hoe meer u zult ontdekken dat u het niet weet. Interviewers vragen dit vaak interviewvragen over geavanceerde aspecten van SQL Joins die vaak over het hoofd worden gezien. Het is dus belangrijk om je in dit concept te verdiepen en het grondig onder de knie te krijgen.
 
Naast de basisconcepten kunnen interviewers ook vragen wat self-cross joins zijn, en de diepte van uw kennis ontdekken door praktische vragen op te lossen. U moet alle verschillende soorten joins kennen, inclusief de meer complexe typen, zoals hash-joins of samengestelde joins. U kunt ook worden gevraagd om uit te leggen wat natuurlijke joins zijn en wanneer deze het nuttigst zijn. Soms moet je de verschillen tussen natuurlijke en innerlijke verbindingen uitleggen.
 
Over het algemeen moet u een grondige ervaring en beheersing hebben van het gebruik van joins in combinatie met andere verklaringen om de gewenste resultaten te bereiken. U moet bijvoorbeeld weten hoe u de WHERE-clausule moet gebruiken om Cross Join te gebruiken alsof het een Inner Join is. Er wordt ook van je verwacht dat je weet hoe je joins kunt gebruiken om nieuwe tabellen te maken zonder al te veel druk op de server uit te oefenen. Of hoe u outside joins kunt gebruiken om de ontbrekende waarden te identificeren en in te vullen bij het doorzoeken van de database. Of de innerlijke werking van buitenste verbindingen, zoals het feit dat het herschikken van hun volgorde de uitvoer kan veranderen. 

Hier is een voorbeeld van de vraag waarbij een innerlijke gezamenlijke verklaring wordt geschreven

Dit is een vrij moeilijke vraag, waarbij de kandidaten wordt gevraagd de ordergrootte weer te geven als percentage van de totale uitgaven.
 
 

Geavanceerd concept N1: datum-tijd-manipulatie

 
SQL-interviewvragen voor ervaren professionals
 

Het is gebruikelijk dat databases datums en tijden bevatten, dus elke ervaren datawetenschapper moet een grondige kennis hebben van het werken ermee. Met dit soort gegevens kunnen we de volgorde volgen waarin de gebeurtenissen plaatsvinden, de frequentie veranderen, intervallen berekenen en andere belangrijke inzichten verkrijgen. Vaak vereist het uitvoeren van deze bewerkingen een volledige beheersing van datum-tijdmanipulatie in SQL. De professionals met dergelijke vaardigheden zullen dus een voordeel hebben ten opzichte van concurrerende kandidaten. Als u niet 100% zeker bent van uw vaardigheden, bekijk dan de hieronder beschreven concepten en kijk hoeveel ervan u bekend in de oren klinken.

Omdat er veel verschillende (maar geldige) benaderingen zijn voor het formatteren van gegevens in SQL, moeten goede codeerders ze op zijn minst allemaal kennen. Tijdens de sollicitatiegesprekken verwachten rekruteringsmanagers kennis van de basisconcepten voor gegevensopmaak en het vermogen om op intelligente wijze te praten over het kiezen van de juiste functie voor de taak. Dit omvat de kennis van een belangrijke FORMAT()-functie en de bijbehorende syntaxis om de functie volledig te kunnen gebruiken. Ook wordt kennis van andere basisfuncties, zoals NOW() verwacht. Het zou ook niet uit de lucht vallen als ervaren professionals vragen zouden krijgen over basisconcepten zoals tijdreeksgegevens en het doel ervan.

Het is ook belangrijk om rekening te houden met de context van de baan waarop u solliciteert. Een AI- of IoT-bedrijf zou zich meer bezighouden met het bijhouden van gegevens die zijn verzameld door de sensoren, terwijl een app voor aandelenhandel mogelijk vereist dat u de prijsschommelingen gedurende de dag, week of maand volgt.

In sommige gevallen kunnen werkgevers vragen naar meer geavanceerde datum-/tijdfuncties in SQL, zoals CAST(), EXTRACT() of DATE_TRUNC(). Deze functies kunnen van onschatbare waarde zijn als u werkt met een grote hoeveelheid gegevens die datums bevatten. Een ervaren datawetenschapper moet het doel van elke functie en de toepassingen ervan kennen. In het ideale scenario zou hij of zij ervaring moeten hebben met het gebruik ervan in het verleden.

De meest complexe datum-tijdmanipulatie in SQL gaat gepaard met de combinatie van basis- en geavanceerde functies. Het is dus noodzakelijk om ze allemaal te kennen, te beginnen met de meer basale FORMAT(), NOW(),CURRENT_DATE en CURRENT_TIME, en inclusief de meer geavanceerde functies die hierboven zijn genoemd. Als ervaren datawetenschapper moet je ook weten wat INTERVAL doet en wanneer je het moet gebruiken.

Hier is een voorbeeld van een vraag die wordt gesteld in Airbnb-interviews, waarbij de kandidaten de beschikbare data moeten gebruiken om de groei van Airbnb te volgen.
 
 

Het uitgangspunt:

 
Bij deze vraag wordt de kandidaten gevraagd de groei van Airbnb te volgen op basis van de veranderingen in het aantal verhuurders dat zich elk jaar inschrijft. Met andere woorden: we gebruiken het aantal nieuw geregistreerde hosts elk jaar als indicator voor de groei. We vinden het groeipercentage door het verschil in het aantal hosts tussen het afgelopen en het huidige jaar te berekenen en dat aantal te delen door het aantal hosts dat in het voorgaande jaar is geregistreerd. Vervolgens vinden we de procentuele waarde door het resultaat met 100 te vermenigvuldigen.

De uitvoertabel moet kolommen en de bijbehorende gegevens bevatten voor het aantal hosts in het huidige jaar, in het voorgaande jaar, en het groeipercentage van jaar tot jaar. Het percentage moet worden afgerond op het dichtstbijzijnde gehele getal en de rijen moeten in oplopende volgorde worden geordend, afhankelijk van het jaartal.
 
 

Oplossing:

 
Om deze vraag te beantwoorden, moet een kandidaat werken met de tabel genaamd 'airbnb_search_details', die veel kolommen bevat. De kolom die we nodig hebben, heeft het label 'host_since', wat het jaar, de maand en de dag aangeeft waarop de host zich voor het eerst heeft aangemeld voor de website. Voor deze oefening zijn de maand en de dag niet relevant, dus het eerste wat we moeten doen is het jaartal uit de waarde halen. Vervolgens moeten we een weergave maken met afzonderlijke kolommen voor het huidige jaar, het voorgaande jaar en het totale aantal hosts in dat jaar. 

Selecteer extract(jaar FROM host_since::DATE) FROM airbnb_search_details WAAR host_since NIET NULL IS

Tot nu toe hebben we twee dingen gedaan:

  1. We hebben ervoor gezorgd dat we alleen de rijen opnemen waarin de kolom host_since niet leeg is.
  2. We hebben het jaartal uit de gegevens gehaald en als DATE-waarde weergegeven.
Selecteer extract(jaar FROM host_since::DATE) count(id) as current_year_host FROM airbnb_search_details WAAR host_since NIET NULL IS GROEPEREN OP extract(jaar FROM host_since::DATE) ORDER OP jaar oplopend

Vervolgens tellen we de ID's en stellen we voor elk jaar de GROUP BY-clausule in. En laat het in oplopende volgorde weergeven. 

Dit zou ons een tabel moeten opleveren met twee kolommen: het jaar en het aantal hosts dat dat jaar is geregistreerd. We hebben nog steeds geen volledig beeld dat nodig is om de vraag op te lossen, maar het is een stap in de goede richting. We hebben ook aparte kolommen nodig voor hosts die zich het afgelopen jaar hebben aangemeld. Dit is waar de LAG()-functie in beeld komt.

SELECT Year, current_year_host, LAG(current_year_host, 1) OVER (ORDER BY year) as prev_year_host Selecteer extract(year FROM host_since::DATE) count(id) as current_year_host FROM airbnb_search_details WAAR host_since NIET NUL IS GROUP BY extract(year FROM host_since: :DATUM) BESTEL PER jaar oplopend

Hier hebben we de derde kolom toegevoegd, die het label 'prev_year_host' krijgt en de waarden ervan komen van 'current_year_host', met uitzondering van de vertraging van één rij. Hier ziet u hoe dat eruit zou kunnen zien:

SQL-interviewvragen voor ervaren professionals
 

Door de tabel op deze manier in te delen, is het erg handig om de uiteindelijke groeisnelheid te berekenen. We hebben een aparte kolom voor elke waarde in de vergelijking. Uiteindelijk zou onze code er ongeveer zo uit moeten zien:

SELECT jaar, huidig_jaar_host, vorig_jaar_host, round(((huidig_jaar_host - vorig_jaar_host)/(cast(vorig_jaar_host AS numeriek)))*100) geschatte_groei FROM (SELECT jaar, huidig_jaar_host, LAG(huidig_jaar_host, 1) OVER (ORDER OP jaar) AS vorig_jaar_host FROM (SELECT extract(jaar FROM host_since::date) AS jaar, count(id) current_year_host FROM airbnb_search_details WHERE host_since IS NOT NULL GROUP BY extract(jaar FROM host_since::date) ORDER BY year) t1) t2

Hier voegen we nog een zoekopdracht en een kolom toe waarin we de groeisnelheid berekenen. We moeten het initiële resultaat met 100 vermenigvuldigen en afronden om aan de vereisten van de taak te voldoen. 

Dat is de oplossing voor deze taak. Het is duidelijk dat functies voor datum-tijdmanipulatie essentieel waren voor het voltooien van de taak. 
 
 

Geavanceerd concept N2: vensterfuncties en partities

 
SQL-interviewvragen voor ervaren professionals
 

SQL-vensterfuncties zijn een van de belangrijkste concepten voor het schrijven van complexe, maar efficiënte SQL-query's. Van ervaren professionals wordt verwacht dat ze een diepgaande praktische en theoretische kennis van raamfuncties hebben. Dit houdt onder meer in dat u weet wat de over-clausule is en dat u het gebruik ervan onder de knie krijgt. Interviewers zouden zich kunnen afvragen hoe de OVER-clausule aggregatiefuncties in vensterfuncties kan veranderen. Mogelijk krijgt u ook vragen over de drie aggregatiefuncties die als vensterfuncties kunnen worden gebruikt. Ervaren datawetenschappers moeten zich ook bewust zijn van andere, niet-geaggregeerde vensterfuncties.

Om optimaal gebruik te kunnen maken van vensterfuncties, moet u ook weten wat de PARTITION BY-clausule is en hoe u deze moet gebruiken. Mogelijk wordt u gevraagd dit uit te leggen en voorbeelden te geven van enkele gebruiksscenario's. Soms moet u rijen binnen partities ordenen met behulp van de ORDER_BY-clausule.

Kandidaten die kunnen aantonen dat ze een grondige kennis hebben van elke individuele vensterfunctie, zoals ROW_NUMBER(), zullen een voordeel hebben. Uiteraard is theoretische kennis alleen niet voldoende; professionals moeten ook ervaring hebben met het gebruik ervan in de praktijk, met of zonder scheidingswanden. Een ervaren professional zou bijvoorbeeld de verschillen tussen RANK() en DENSE_RANK() moeten kunnen uitleggen. Een ideale kandidaat moet enkele van de meest geavanceerde concepten kennen, zoals frames binnen partities, en deze duidelijk kunnen uitleggen.

Goede kandidaten moeten ook het gebruik van de functie NTH_VALUE() uitleggen. Het zou geen kwaad kunnen om de alternatieven voor deze functie te vermelden, zoals de functies FIRST_VALUE() en LAST_VALUE(). Bedrijven houden er vaak van om kwartielen, kwantielen en percentielen in het algemeen te meten. Om deze bewerking uit te voeren, moeten datawetenschappers ook weten hoe ze de vensterfunctie NTILE() moeten gebruiken.

In SQL zijn er meestal veel manieren om een ​​taak te benaderen. Toch bieden vensterfuncties de gemakkelijkste manier om algemene, maar complexe bewerkingen uit te voeren. Een goed voorbeeld van zo'n vensterfunctie is LAG() of LEAD(), dus u zou er ook mee bekend moeten zijn. Laten we bijvoorbeeld eens kijken naar een voorbeeld uit de vorige oplossing voor een moeilijke Airbnb-interviewvraag:

Om het aantal hosts in het voorgaande jaar weer te geven, hebben we de functie LAG() gebruikt met de instructie OVER. Dit had op veel andere manieren kunnen worden gedaan, maar door vensterfuncties konden we het gewenste resultaat krijgen in slechts één regel SQL-code:

LAG(huidig_jaar_host, 1) OVER (ORDER OP jaar) als vorig_jaar_host

Veel bedrijven moeten de groei over een bepaalde periode berekenen. De functie LAG() kan van onschatbare waarde zijn bij het voltooien van dergelijke opdrachten.
 
 

Geavanceerd concept N3: groei van maand tot maand

 
SQL-interviewvragen voor ervaren professionals
 

Veel organisaties gebruiken data-analyse om hun eigen prestaties te meten. Dit kan het meten van de effectiviteit van marketingcampagnes of de ROI op een specifieke investering inhouden. Het uitvoeren van een dergelijke analyse vereist een diepgaande kennis van SQL, zoals datum-, tijd- en vensterfuncties.

Datawetenschappers zullen ook hun vaardigheden moeten bewijzen in het formatteren van de gegevens en het weergeven ervan als percentages of in een andere vorm. Om de praktische vragen op te lossen waarbij u de groei van maand tot maand moet berekenen, moet u over het algemeen de combinatie van meerdere vaardigheden gebruiken. Sommige van de vereiste concepten zullen geavanceerd zijn (vensterfuncties, datum-tijd-manipulatie), terwijl andere eenvoudig zullen zijn (aggregaatfuncties en algemene SQL-instructies).

Laten we eens kijken naar een voorbeeldvraag van interviewers bij Amazon.

Het uitgangspunt:

 
Bij deze vraag moeten we werken met een aankooptabel en de maandelijkse groei of daling van de omzet berekenen. Het eindresultaat moet op een specifieke manier worden opgemaakt (JJJJ-MM-formaat) en de percentages moeten worden afgerond op het tweede decimaal. 

Oplossing:

 
Als u aan een taak als deze werkt, moet u eerst de tabel begrijpen. U moet ook de kolommen identificeren waarmee u moet werken om de vraag te beantwoorden. En hoe uw output eruit gaat zien.

In ons voorbeeld hebben de gegevenswaarden het objecttype, dus we zullen de functie CAST() moeten gebruiken om ze in datumtypen om te zetten.

SELECT to_char(cast(created_at as date), 'YYYY-MM') FROM sf_transactions

De vraag specificeert ook een notatie voor datums, zodat we de functie TO_CHAR() in SQL kunnen gebruiken om de datum in deze notatie uit te voeren.

Om de groei te berekenen, moeten we ook de aggregatiefunctie Created_at en SUM() selecteren om het totale verkoopvolume voor die datum te krijgen. 

SELECT to_char(cast(created_at as date), 'YYYY-MM'), aangemaakt_at, sum(value) FROM sf_transactions

Op dit punt moeten we opnieuw vensterfuncties gebruiken. Concreet gaan we de functie LAG() gebruiken om toegang te krijgen tot het volume van de afgelopen maand en dit als een aparte kolom weer te geven. Daarvoor hebben we ook een OVER-clausule nodig.

SELECT to_char(cast(created_at as date), 'YYYY-MM') AS jaar_maand, aangemaakt_at, sum(value) lag(sum(value), 1) OVER (ORDER BY Created_at::date) FROM sf_transactions GROUP BY Created_at

Gebaseerd op de code die we tot nu toe hebben geschreven, zal onze tabel er ongeveer zo uitzien:

SQL-interviewvragen voor ervaren professionals
 

Hier hebben we de datums en bijbehorende totaalwaarden in de somkolom, en de waarden van de laatste datum in de vertragingskolom. Nu kunnen we de waarden in de formule pluggen en de groeisnelheid in een aparte kolom weergeven.

We moeten ook de onnodige kolom create_at verwijderen en de clausules GROUP BY en ORDER BY wijzigen in year_month.

SELECT to_char(cast(aangemaakt_op als datum), 'JJJJ-MM') AS jaar_maand, som(waarde), lag(sum(waarde), 1) OVER (ORDER BY to_char(cast(aangemaakt_op als datum)) FROM sf_transactions GROUP BY jaar maand

Zodra we de code hebben uitgevoerd, zou onze tabel alleen de kolommen moeten bevatten die essentieel zijn voor onze berekening.

SQL-interviewvragen voor ervaren professionals
 

Nu kunnen we eindelijk tot de oplossing komen. Hier ziet u hoe de uiteindelijke code eruit zou zien:

SELECT to_char(aangemaakt_op::datum, 'JJJJ-MM') AS jaar_maand, round(((sum(waarde) - lag(som(waarde), 1) OVER w) / (lag(som(waarde), 1) OVER w)) * 100, 2) AS Revenue_diff_pct FROM sf_transactions GROUP BY year_month WINDOW w AS ( ORDER BY to_char(created_at::date, 'YYYY-MM')) ORDER BY year_month ASC


 

In deze code nemen we twee kolomwaarden uit het vorige voorbeeld en berekenen het verschil daartussen. Merk op dat we ook gebruik maken van vensteraliassen om de herhaling van onze code te verminderen.

Vervolgens delen we dit, in overeenstemming met het algoritme, door de omzet van de huidige maand en vermenigvuldigen we dit met 100 om de procentuele waarde te krijgen. Ten slotte ronden we de procentuele waarde af op twee decimalen. We komen tot het antwoord dat aan alle vereisten van de taak voldoet. 

Geavanceerd concept N4: Churn-percentages

 
Ook al is churn het tegenovergestelde van groei, het is ook een belangrijke maatstaf. Veel bedrijven houden hun churnpercentages bij, vooral als hun bedrijfsmodel op abonnementen is gebaseerd. Op deze manier kunnen ze het aantal verloren abonnementen of accounts volgen en de redenen voorspellen die dit hebben veroorzaakt. Van een ervaren datawetenschapper wordt verwacht dat hij weet welke functies, uitspraken en clausules hij moet gebruiken om het verlooppercentage te berekenen.

Abonnementsgegevens zijn zeer privé en bevatten privégebruikersinformatie. Het is ook belangrijk dat datawetenschappers weten hoe ze met dergelijke gegevens moeten werken zonder deze bloot te leggen. Bij het berekenen van klantverlooppercentages zijn vaak algemene tabelexpressies betrokken, wat een relatief nieuw concept is. De beste datawetenschappers moeten weten waarom CTE’s nuttig zijn en wanneer ze deze moeten gebruiken. Bij het werken met oudere databases, waar CTE's niet beschikbaar zijn, zou een ideale kandidaat de klus nog steeds moeten kunnen klaren.

Hier is een voorbeeld van een moeilijke taak. Kandidaten die bij Lyft solliciteren, krijgen deze opdracht om het churnpercentage van chauffeurs bij het bedrijf te berekenen.

Om dit probleem op te lossen, moeten datawetenschappers case/when-instructies, vensterfuncties zoals LAG(), evenals FROM / WHERE, en andere basisclausules gebruiken. 

Conclusie

 
Jarenlang als datawetenschapper werken staat zeker indrukwekkend op je cv en levert je veel sollicitatiegesprekken op. Als u echter eenmaal uw voet tussen de deur heeft gezet, moet u nog steeds over de kennis beschikken als aanvulling op uw jarenlange ervaring. Ook al heb je ruime ervaring in het schrijven van queries in SQL, het kan geen kwaad om bronnen zoals te gebruiken StrataScratch om je kennis op te frissen.

 
 
Nate Rosidi is een datawetenschapper en in productstrategie. Hij is ook een adjunct-professor onderwijsanalyse en is de oprichter van StrataScratch, een platform dat datawetenschappers helpt bij het voorbereiden van hun interviews met echte interviewvragen van topbedrijven. Maak contact met hem op Twitter: StrataScratch or LinkedIn.

Bron: https://www.kdnuggets.com/2022/01/sql-interview-questions-ervaren-professionals.html

Tijdstempel:

Meer van KDnuggets