Bevezetés

Az utolsó cikkből kaptam néhány kérdést, amelyeket egy fő kérdésben foglaltam össze: „Jó és minden, de miért kell mindenkinek tudnia. Számos mérnöki tudományág van, amely nem követeli meg. Az elmúlt 5 évben dolgozom, de soha nem volt szükségem ezek megvalósítására.” Alkossunk néhány hipotetikus kérdést, és találjuk meg közösen a választ.

Miért tanulj versenyképes programozást?

„A versenyprogramozás olyan sport, mint a krikett, a futball, az úszás stb.

Ha híres olimpiai bajnok úszó akar lenni, mint Michael Phelps, gyakorolnia kell, sokat kell gyakorolnia, majd sok emberrel versenyeznie kell. Ugyanez vonatkozik a programozói karrierre is, ha rocksztár programozó akar lenni, akkor sok programozást kell gyakorolnia, és sok más programozóval kell versenyeznie, hogy megtalálja a jelenlegi helyét a hierarchiában. Nem hiszem, és nem ajánlom senkinek, hogy a fentinél többet gondoljon, amikor ez a kérdés felvetődik a fejében. Kérlek, ne pártfogold a kelleténél jobban, különben félni kezdesz tőle, ahelyett, hogy imádnád.

Miért érdemes adatstruktúrákat és algoritmusokat gyakorolni?

Mielőtt kinyitná a 6. érzéket, először sajátítsa el a józan észt.

Először válaszoljunk erre a kérdésre: „Az elmúlt 5 évben dolgozom, de soha nem volt szükségem ezeknek a megvalósítására”. Valaki kényelmesen dolgozott az elmúlt 5 évben, mert egy kiváló programozó közreműködött a kódszerkesztő kódolásában, hogy láthassa az összes intelligens javaslatot, és megtalálja a hibáikat, mielőtt lenyomná a kódot. Durva, de a valóságban Ön a programozók finomabb fajtájának ügyfelei.

Elég a demotivációból, most nézzük a valóságot. Ha valaki elégedett azzal, hogy véletlenszerű gombokat és statikus oldalakat hoz létre, akkor önmagában bűn arra kényszeríteni, hogy olyan valakivé váljon, akit soha nem akart. A kerék újrafeltalálása senkinek nem ajánlott, de ha mérnök vagy, aki érti a kerék működését, akkor ez köztudott.

Az, hogy merj ugrani és megértsd, hogyan juthatsz el egy bizonyos megoldáshoz, nem csak azért fontos, mert a problémád megoldódik, hanem a jövőben a hasonló koncepciókból elágazó problémákat is könnyedén meg tudod majd oldani. Az adatstruktúrák jól tesztelt segédprogramok, amelyek formájában a valós problémát a kényelmes képzeletbeli világba modellezheti. Másrészt az algoritmusok csak azok a lépések, amelyeket egy általános célú adatszerkezeten hajtott végre, hogy személyre szabott megoldást hozzon létre az adott problémára.

Például:

Minden mérnök a Google-nál szeretne dolgozni. Tegyük fel, hogy csatlakozik a Google-hoz, és felkerül a google járatok csapatába. Valóságos probléma az lesz, hogy megtaláljuk a legolcsóbb/legrövidebb járatot két város között, akár közvetlen, akár csatlakozó járatokat.

Sok szerencsét, ha néhány SQL lekérdezéssel közvetlen járatot talál a DB-ből, de ha nem léteznek közvetlen járatok, akkor algoritmust kell írnia egy grafikon adatszerkezetén<. /strong> ahol minden csomópont egy várost jelöl, és a cél az, hogy megtalálja a legrövidebb utat a grafikon két csomópontja között.

Az a mérnöki főiskola ágyas osztálya, csenget?

Mi a kapcsolat a kompetitív programozás és a DSA között?

A kérdésre a válasz egyszerű, és Semmi. A CP-ben és a DSA-ban semmi közös, de ha nem a DSA-ban, akkor mi? Sok mindent megpróbáltam elképzelni, de nem találtam semmit, ami olyan számszerűsíthető és alapvető lenne, mint a DSA. Tegyük fel, hogy TV-t szeretne vásárolni, számos tényező alapján megítélheti, mint például a származási ország, a karosszéria színe, az előlapok, az ár, a márka stb., de ha egyetlen mérőszámot kell létrehoznia az összes TV tömeges megítéléséhez a világon szerintem semmi sem közelíti meg a „Képminőséget”.

Ugyanez a kapcsolat a kompetitív programozás és a DSA között. Létezik, mert a programozókat valami olyan alapvető szempont alapján kell megítélnünk, ami mindenkitől elvárható, és nem igényel nagyon precíz képzést egy adott területen. Ha azt mondjuk, hogy rengeteg helyen versenyezhetsz a saját területén, például ha szeretnél versenyezni a CSSkészségeidben, nézd meg a https://cssbattle.dev webhelyet.

Következtetés

Miután a CP és a DSA mellett szóltam, egy meglehetősen szomorú megjegyzéssel zárom. Használatra szánták, nem visszaélésre. Az emberek és a cégek már csak a DSA alapján kezdték el mérlegelni a jelöltekben rejlő lehetőségeket. Az olyan cégek, mint a FAANG, rossz hírnevet szereztek ezért. Ez nagyrészt rendben van számukra, mivel naponta 1000 kérelmet kapnak, és egyformán kell elbírálniuk őket. De még a réscégek is jobban hajlanak erre, mint toborzási gyakorlatra, és így rossz piacot teremtenek, ahol ezeket a tanulni érdemes témákat kanalazzák. Az egész youtube-ot elárasztják a „Hogyan lehet feltörni az amazont” jellegű videók. Az olyan webhelyeket, mint a leetcode, a hacker rank, a CodeChef stb., kizárólag állásszerzés céljából használják. Kíváncsi vagyok, a felhasználói bázisuk hány százaléka folytatja a gyakorlást, miután egy díszes állást kapott.

Ezek az eszközök azért léteznek, hogy rendet teremtsenek a káoszban, megoldják a problémákat, felfűtsék a projekteket, de soha nem képzelték el őket egy jól fizető állás útlevelének.

Kapcsolódni

🏭 LinkedIn: https://www.linkedin.com/in/sameerkumar1612
🏠 Weboldal: https://hi-sameer.web.app