Kapag ang isang tao ay nagsimulang matuto kung paano mag-program , mag-isa man o sa pamamagitan ng mga online na kurso, napakahalagang bigyang-diin ang ilang domain at ayusin ang lahat. Sa artikulong ito, ipinakita namin ang aming istraktura — mga gawain sa Java para sa mga nagsisimula, na may indikasyon kung gaano karami ang anumang partikular na uri ng gawain na kinakatawan sa kursong online programming ng CodeGym , kasama ang mga kapaki-pakinabang na link.
Saan ako makakahanap ng mga brainteaser?

Magsanay gamit ang syntax ng wika
Ito ang pinakaunang mga gawain sa Java programming para sa mga nagsisimula — ang pundasyon — mula sa "Hello, World" hanggang sa mga loop at array. Ang CodeGym ay marami sa mga ito: lalo silang nakakonsentra sa unang anim na antas ng Java Syntax quest. Malamang na hindi mo kailangang maghanap ng higit pa sa kanila sa ibang lugar. Tiyak na mayroon tayong sapat upang makabisado ang mga ito. Higit pa rito, kapag mayroon kang mas mahirap na gawain, awtomatiko mong susuriin ang syntax. Ngunit kung bigla mong makita ang iyong sarili na nangangailangan, anumang Java textbook para sa mga nagsisimula ay naglalaman ng mga katulad na problema. Ngunit hindi tulad ng CodeGym, hindi magkakaroon ng instant na pag-verify sa gawain ang mga exercise book na ito.Magsanay sa mga koleksyon
Ang mga koleksyon ay ang unang "seryosong" paksa na nakakaharap ng mga baguhang programmer sa kanilang pag-aaral. Ang mga baguhan na gawain na nakatuon sa mga koleksyon ng Java ay mahusay ding kinakatawan sa CodeGym — sa ikapito at ikawalong antas ng Java Syntax quest. Dito unang maririnig ng mag-aaral ang tungkol sa Java Collections Framework, at gagana nang kaunti sa mga interface ng Set, List, at Map kasama ang ilan sa kanilang mga pagpapatupad. Gayunpaman, sa yugtong ito makakakuha ka lamang ng isang pagpapakilala sa kapaki-pakinabang na tool na ito at mga simpleng gawain sa Java. Mas masusing pag-aaralan mo ang mga koleksyon sa panahon ng paghahanap sa Java Collections . Makikita mo kung gaano kahalaga ang paksang ito — isang buong quest ang ipinangalan dito!Magsanay nang may mga pagbubukod
Nagbibigay ang Java ng isang espesyal na mekanismo para sa paghawak ng mga pambihirang sitwasyon, na makabuluhang pinapasimple ang proseso ng "paghuli" ng mga error sa aplikasyon. Ngunit upang masulit ito, kailangan mong malaman kung paano gumagana ang paghawak ng exception sa Java. Ang CodeGym ay may limpak-limpak na mga gawain. Makakaharap mo pa sila sa unang paghahanap — Java Syntax.
Magsanay sa uri ng paghahagis
Ang pangkat ng mga gawain na ito, siyempre, ay maaaring mauri bilang mga pangunahing gawain sa syntax. Gayunpaman, sa aming mapagpakumbabang opinyon, ang mga tao ay madalas na hindi pinahahalagahan ang gayong mga gawain, at ang mga baguhan ay dumadaloy sa kanila. Iyon ang dahilan kung bakit sinisira namin ang amag: Hindi namin pinag-aaralan ang mga primitive type na gawain sa conversion sa simula pa lang gaya ng madalas na ginagawa ng iba. Sa halip, tatalakayin namin ang mga ito sa ibang pagkakataon — sa pagtatapos ng Java Syntax quest. At pagkatapos ay matututunan nating mag-cast ng mga hindi primitive na uri (mga bagay) kapag pinag-aralan natin ang OOP sa Java Core quest. Ang CodeGym ay sapat na sa mga gawaing ito. Hindi mo na kailangang maghanap pa.Magsanay sa OOP
Ang OOP ay hindi ang pinakamahirap na paksa, ngunit ito ay lubhang mahalaga. At nagtatago ito ng maraming subtleties na gustong gamitin ng mga tagapanayam para mahuli ang mga magiging junior developer. Ang kursong CodeGym ay naglalaman ng mga praktikal na gawain sa programming para sa mga nagsisimula upang matulungan kang maunawaan ang object-oriented na pilosopiya. Ngunit para talagang maunawaan ang OOP, inirerekomenda namin na basahin mo ang mga nauugnay na literatura (halimbawa, "Core Java" ni Cay Horstmann at Gary Cornell, "Pagsusuri at Disenyo na Naka-orient sa Bagay" ni McLaughlin, o iba pang mga aklat ) .Magsanay sa input/output stream
Nagsisimula kaming gumamit ng mga stream ng I/O bago pa namin maunawaan ang mga ito. Ito ay Java, ang aking batang tipaklong! Ang pagpapaliwanag sa System.out, pabayaan ang System.in, ay mahirap at hindi kailangan sa una mong pagsisimula. Ngunit habang nagtatrabaho ka sa Java Core quest, sapat na ang iyong nalalaman upang maunawaan ang medyo nakakalito na paksang ito, at pinag-uusapan natin hindi lamang ang console I/O, kundi pati na rin ang pagtatrabaho sa file system. Ang pangunahing bagay ay huwag laktawan ang mga gawaing ito (marami ang CodeGym) at patuloy na pag-aralan ang teorya.Mga brainteaser
Sa pamamagitan ng "brainteaser", ang ibig naming sabihin ay ang mga gawain ng tumaas na pagiging kumplikado na hindi masyadong tungkol sa kaalaman kundi tungkol sa kakayahang ilapat ang iyong nalalaman sa mga hindi kinaugalian na paraan. Ito ay mga karaniwang gawain para sa isang junior Java developer. Ang mga kumpanya ay labis na mahilig magtanong sa kanila sa panahon ng mga panayam, ngunit sa totoong trabaho, ang mga ganitong brainteaser ay hindi madalas na nakakaharap. Kaya't ang CodeGym ay may ilan, ngunit hindi masyadong marami (karaniwang makikita mo ang mga ito sa mga aralin ni Captain Squirrels).
- https://javahungry.blogspot.com/2014/03/java-programming-puzzles-tackling-brainteaser-in-java-interv...
- https://howtodoinjava.com/java-interview-puzzles-answers/
- https://www.codechef.com/
- https://www.codewars.com/?language=java
Algorithm at istruktura ng data
Tulad ng para sa mga algorithm at istruktura ng data, mayroong patuloy na debate tungkol sa kung gaano kalaki ang kailangan ng isang programmer sa hinaharap. Muli naming sasagutin: mahalaga ang mga ito para sa pagtatatag ng tamang pag-iisip, ngunit bihira silang direktang kinakailangan para sa trabaho. Ito ay dahil ang Java, pati na rin ang iba pang mga programming language, ay may mga aklatan na may mga pagpapatupad ng bawat maiisip na algorithm para sa pag-uuri, paghahanap, at higit pa. Gayunpaman, ang pagsulat ng iyong sariling pagpapatupad ng isang algorithm ay maaaring maging lubhang kapaki-pakinabang at maaaring magbigay sa iyo ng ideya ng pagiging kumplikado nito. Lalo na sa mga taong high school lang nag-aral ng math. Karaniwan, ang mga gawaing ito ay maaaring ipagpalit sa mga brainteaser na may tanging pagkakaiba na lahat ng mga ito ay inilarawan at nalutas nang paulit-ulit online. Hindi mo na kailangan ng validator tool. Pumili ng anumang kurso mula sa, halimbawa, Princeton Universityo isang kolehiyo sa California . Magsanay sa mga istruktura ng data:Multithreading
Kahit sino ay maaaring magsulat ng "Hello, World!" programa. Ngunit paano ang paggamit ng Java Thread API upang ipakita ang sikat na parirala mula sa isang hiwalay na thread? O paano ang pagpapakita ng "Hello, World!" limang beses mula sa limang magkakaibang mga thread nang hindi pinaghahalo ang mga string? Ang multithreading ang magiging pinakamahusay na "pagsubok ng iyong lakas" habang pinag-aaralan mo ang Java Core. Isang buong CodeGym quest, na tinatawag na Java Multithreading , ay nakatuon sa paksang ito, na malayo sa madali. Naglalaman ito ng malaking bilang ng mga gawain upang payagan ang mga mag-aaral na maramdaman ang "sakit at kagandahan" ng parallel processing. Ang mga unang "tunay" na proyekto ng mga mag-aaral ay karaniwang naglalaman ng ilang antas ng multithreading. Halimbawa, mga simpleng laro.
Magsanay sa multithreading Limang tahimik na pilosopo ang nakaupo sa isang round table. Isang plato ng spaghetti ang nasa harapan ng bawat isa sa kanila. May mga tinidor sa mesa sa pagitan ng bawat pilosopo (isa sa kaliwa at isa sa kanan). Ang bawat pilosopo ay maaaring kumain o mag-isip ng malalim na pag-iisip. Ngunit makakain lamang siya kung may hawak na dalawang tinidor, ibig sabihin, sa pamamagitan ng pagpupulot sa isa sa kaliwa at sa kanan. Ang "pick up fork" at "put down fork" ay mga natatanging aksyon na isinasagawa nang sunud-sunod. |
Magsanay sa generics
Ang paglalahat ay ang pinakadiwa ng automation, kaya sa ilang kahulugan ito ang kakanyahan ng programming. Alinsunod dito, hindi natin maaaring balewalain ang paksa ng mga generic sa Java. Ang CodeGym ay may mga gawain sa programming na kinasasangkutan ng mga generics (pangunahin sa paghahanap ng Java Collections, simula sa Level 5). Saan ako makakahanap ng mga kapaki-pakinabang na pagsasanay at materyales sa generics?- https://docs.oracle.com/javase/tutorial/java/generics/QandE/generics-questions.html
- https://www.geeksforgeeks.org/generics-in-java/
- http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html
- "Effective Java" ni Bruce Eckel
Magsanay sa mga pattern ng disenyo
Sa ilang mga punto (dalawang-katlo ng paraan sa pamamagitan ng kursong CodeGym), ang mga nagsisimulang programmer ay dapat magsimulang tumingin sa mga panuntunan para sa pagkamit ng magandang anyo sa programming. Pinag-uusapan natin ang wastong pag-format ng code (mas simple) at mga pattern ng disenyo (mas mahirap). Ang CodeGym ay may mga gawain para dito. Kakailanganin mo ng higit pa at mahahanap mo ang mga ito sa " Head First Design Patterns " ni Elisabeth Freeman at Kathy Sierra. O maaari mong isipin kung paano mo mailalapat ang mga pattern ng disenyo sa mga dati nang nalutas na gawain.Pagsubok sa yunit
Ang isang mahalagang kasanayan para sa sinumang programmer, na kadalasang nagkakamali na iniuugnay lamang sa mga tagasubok, ay ang kakayahang magsulat ng mga pagsubok sa yunit para sa kanyang sariling code. May ilang gawain ang CodeGym na nauugnay sa mga unit test, ngunit hindi mo na kailangang mag-abala sa paghahanap ng higit pa. Kapag naiintindihan mo kung paano magsulat ng mga unit test, ugaliing takpan ang iyong code (sa sariling mga proyekto, sa iyong pag-aaral) sa kanila. Ito ay higit na nakakatulong kaysa sa pagsasagawa ng mga pagsusuri gamit ang console output, isang kasanayan na kadalasang nagpapahirap sa mga programmer ng mag-aaral. Bilang karagdagan, kadalasan ang unang bagay na itinatalaga ng mga bagong junior developer sa mga kumpanya ay ang magsulat ng mga unit test para sa code ng ibang tao.Magsanay gamit ang mga regular na expression
Ito ay isang simpleng paksa na halos hindi naiintindihan ng mga baguhan, dahil ito ay hindi pamilyar at sila ay tamad. Talagang sulit na gumugol ng ilang araw sa pag-aaral ng paksa, makarating sa ilalim ng "regex", at makakuha ng kalamangan sa mga hindi pa nakakagawa nito. Ito ay kapaki-pakinabang din dahil ang mga regular na expression ay halos independiyente sa wika: kung matutunan mo ang mga ito nang isang beses, magagamit mo ang mga ito kahit saan. Ang CodeGym ay walang anumang mga gawain na nakatuon sa mga regular na expression, kahit na ang ilan ay maaaring malutas sa kanilang tulong. Narito ang mga karagdagang mapagkukunan para sa pag-unawa sa paksang ito:- regex101.com — isang website kung saan maaari mong suriin ang mga regular na expression online
- Ang "Introducing Regular Expressions" ni Mike Fitzgerald — isang maikli at simpleng panimulang aklat.

GO TO FULL VERSION