Loading...
krisitown avatar krisitown 45 Точки

Мнения/Впечатления от изпита на 15.11 по Java

Интересно ми е какво мислят колегите за изпита по Java днес. Как ви се сториха задачите? 

На мен лично главното впечатление ми е: http://i.imgur.com/5lj7oa3.jpg

Но сериозно, според мен задачите бяха добре на трудност, може би 1вата беше доста лесна, но последната до някъде компенсира за това.

 

EDIT: Също така искам да попитам, кога г/д може да очакваме оценките си за курса?

2
Java Advanced 19/11/2015 11:41:44
ktodorov avatar ktodorov 42 Точки

На мен ми се сториха доста лесни, с изключение на последната. Тя компенсира тотално.

В java sorting-ът е много по-кофти, отколкото в C# :) Поне за мен. Иначе бих се радвал, ако скоро бъдат качени тестовете. Даде ми time limit на седми тест и ми е много интересно какво има в него :) Само това ме издъни... smiley

1
krisitown avatar krisitown 45 Точки

Аз преди да ида на изпита незнах нищо от stream (lambda-та на java), само знаех че съществува, и като ми остана само последната задача, седнах и го научих за към час, много яко се учи на изпит. Иначе съм съгласен че е малко по-кофти защото трябва да го изпишеш по подробно, но след като го зацепих сортирането ми харесва малко повече защото като си го разпишеш добре имаш голям контрол на това как да се сортират нещата. Иначе time limit-а може да ти е от това че имаше някакъв проблем с judge-а към края.

1
ktodorov avatar ktodorov 42 Точки

Да, факт, като си пишем Comparator-a, имаме много повече контрол.

Аз се бях занимавал с stream, защото ми допада функционалното програмиране, но не бях писал Comparators. На място се учи доста бързо :)

2
byclops avatar byclops 126 Точки

На мен ми се видя много лесен изпита, направо прекалено. Вчера  неуспешно  решавах изпита от 4 октомври, и направо се бях уплашил. Според мен там задачите са 3-4 пъти по-трудни. Най-лесната задача от 4-ти е сравнима с най-трудната от днес. Предполагам че Софтуни са усетили че това е прекалено трудно и сега са залитнали в другата посока:)

 

1
ktodorov avatar ktodorov 42 Точки

Да, Dragon Accounting си я бива laugh И аз вчера я решавах и се уплаших :)

0
zahariyapehlivanova avatar zahariyapehlivanova 10 Точки

Според мен, изпита беше добре, защото задачите бяха съобразени и с "новаците", и с по-напредналите.

2
15/11/2015 23:29:23
supersane avatar supersane 234 Точки

1ва задача беше елементарна.

2ра беше също лесна, отне ми повечко време да направя регекса, защото до сега не бях решавал задача с регекс, който да мачва отделни групи.

3та може би беше най-трудната за мен, като цяло матриците са ми слабост, дори я слагам по-трудна от Retake(Heigan Dance).

4та си имаше своите особености, в сравнение с други 4-ти задачи, които решавах за подготовка, по-принцип 4тите задачи от подготовките ми бяха любими, тук обаче освен, че вложените структури бяха повече, на място в изпита се научих, как да си направя мой Comparator, и да го използвам за да сортирам по два начина едновременно. 

Като цяло съм доволен, изпита беше адекватен, не прекалено лесен, не и като онзи с драконите, според мен беше добре балансиран. И характерно за изпит в софтуни, винаги се научават нови неща по време на изпит като си на зор. :D

5
pgboev avatar pgboev 7 Точки

Интересно обаче аз само не разбрах, от какво в описаноето на задача 2ра трябва да подразбера, че между стринговете може да няма нищо и всъщност regex-a да ми е 

([A-Z][a-z]+).*?([A-Z][a-z]*[A-Z]).*?([0-9]+)L , защото моят беше 
([A-Z][a-z]+).+?([A-Z][a-z]*[A-Z]).+?([0-9]+)L

като е казано "So, you will be given lines of input such as Gosho$$$$RakiQ####12L". Чудя се защо не е написано примерно и "or GoshoRakiQ12L." или да беше даден някой такъв нулев тест да подскаже малко от малко. Защото с това, което е написано ми се открива само половината от това, което се изисква от мен да направя като филтър, аз как трябваше да се досетя и за другия input не знам. Нямаше да се учудя ако не беше написан и този ред даже. Ама не, ние пък трябва просто да знаем от някъде, че такива input-и трябва се приемат... Все едно някой непознат да ми каже "купи ми сладолед" и като му взема "ама защо не си ми взел шоколад и Йогурт, like duuuh, как няма де се сетиш, че искам"... 
5
22/11/2016 22:22:43
byclops avatar byclops 126 Точки

В условията на задачите и примерите обикновено не се дава абсолютно всичко в прав текст. Целта е да се види кой може да вникне в детайлите и да се симулира реална ситуация, в която заданието по дефиниция никога не е 100% пълно и коректно, а тестовете човек сам трябва да си ги измисли.

В конкретната задача е дадена информация единствено за формата на стринговете които трябва да се извлекат, и никъде не се дават ограничения за частите, които ги разделят. Така че няма противоречие, те може да са абсолютно всичко, включително и да не съществуват. 

Нормално е да изходиш от примерите и да заложиш нещо подобно на тях  в регекс-а, но като се види че тестовете не излизат, трябва да си прочетеш още веднъж условието, буква по буква, да си погледнеш кода, и да помислиш къде може да е си интерпретирал неправилно. От там нататък процеса включва малко налучкване, но поне веднага виждаш резултата.

Между другото, и аз се бях хванал на същата уловка и ми трябваха 13 опита докато уцеля правилния отговор:)

1
supersane avatar supersane 234 Точки

Колега, затова задачите са с по десетина теста, като всеки тест си има някаква специфика, която тества върху твоето решение. По принцип от условието на задачата и нулевите тестове се покрива около 70-80% от тестовете. Останалите са въпрос на досетливост, и оптимизация, защото все пак това е СофтУни. 

ПС: Понеже в момента уча в ТУ и карам отворени курсове в СофтУни(март започвам фундаменталс), вчера докато чаках за изпита, се замислих че разликата между това да идвам на изпит тук и в ТУ, е че когато съм тук се чувствам като на състезание, на олимипиада, а когато съм в ТУ се моля да препиша за да хвана 3. Надявам си ме разбрал какво имам предвид. 

ПС2: Колко от тестовете не ти минаваха със стария ти регекс в сравнение с новия?

-3
sholeto avatar sholeto 93 Точки

Не само ти не го разбра това, и аз не го разбрах, но накрая с налучкване стана работата. Разбира се това, че ми остана около час след като реших другите задачи помогна да имам време да си блъскам главата по тази. :D

Иначе наистина изпита беше по-лесен от предни Java изпити. Трета и четвърта задача ми отнеха значително време, но там поне нещата бяха написани ясно, нямаше някакви скрити детайли, които трябва да се досетим или да прочетем между редовете. Също останах малко изненздан, че нямаше задача, която да изисква BigDecimal или BigInteger за да бъде решена със 100 точки. :D

0
16/11/2015 09:36:10
tilchev92 avatar tilchev92 Trainer 128 Точки

Първа задача - много лесна.

Втора - за мен лично беше най-трудната понеже не се обичаме много с регексите. Дори в един момент мислех да почна да я решавам с обхождане char по char. Но се получи този ефект с ученето на изпит и си доизясних много неща относно регексите. В последните минути ми оставаха 20 точки от нея и понеже джъджа се беше сбозил направих 4-5 събмита с малки промени в регексите надявайки се, че поне с 1 ще докарам 100 и магията взе, че стана.

Крайния ми регекс беше това: "([A-Z]{1}[a-z]+).*?([A-Z]{1}[a-z]*[A-Z]{1}).*?(\\d+)L"

Трета не ме затрудни особено. Отначало ми гърмеше заради една простотия в четенето на входните данни, но като се препсувах и хвана 100 веднага.

Четвърта като логика и писане, не ми беше проблем. Подходих с 3 TreeMap<String, ArrayList<String>>. Един за всички грешки и по още един за 2та подвида. Така си спестих сума вложени структури и си улесних по-нататък работата. Първо имах малък проблем с достъпването на съобщенията в warningMap и crucialMap. Даваше ми null pointer exception. Пробвах да направя if (arrayList.isEmpty()) проверка но продължаваше да хвърля грешки. Най-вероятно защото проблема не е бил, че колекцията е празна, а че не съществува изобщо. След това направо замених if/else-a с try/catch и заспа. Хванах 75 точки. Проблема се оказа отново в регексите - не бях обърнал внимание, че вътре може да има всичко, а не само букви.

Регекс: "\\[\"(.*)\"\\].+\\[\"(.*)\"\\].+\\[\"(.*)\"\\]"

Целите решения

2
16/11/2015 11:16:01
krisitown avatar krisitown 45 Точки

За мен, 1ва и 2ра бяха елементарни, (в регекса ти на 2ра {1} не е нужно тъй като се подразбира).

3тата я мъчих доста, накрая я направих като минавах през редицата или колоната, записвах я в друг масив с разместени позиций и после тоя масив го слагах на мястото на колоната/реда, даваше ми 1 тайм лимит, обаче май беше от джъджа, защото не бях единствен..иии затова нямам 400 а 390 точки (sad face).

Последната я направих със HashMap<String, ArrayList<String>[]> където стринга беше името на проекта масива с индекс 0 пазеше критичните съобщения, а този с 1 пазеше предупрежденията. Получи се ефекта за учене на изпита като си научих stream и си написах компаратора. Пускам я първия път и бам 87 точки. Реших да я пусна пак щото чух че джъджа нещо не бачка като хората и ми даде 100.

0
tilchev92 avatar tilchev92 Trainer 128 Точки

Прав си за регекса, както казах - слаба страна ми е. Решението ти на 3та ми звучи добре, може би наистина проблема  е бил от джъджа. Може да пробваш сега да я събмитнеш няколко пъти. Другото за което се сещам е ако не си разделил числото което казва колко пъти да шифтваш на броя на елементите в масива, но то без това може би повече тестове няма да минат, а не само 1.

0
16/11/2015 19:21:29
enevlogiev avatar enevlogiev 1168 Точки

@krisitown, не са от джъджа тези 10 точки, видях ти решението, има места, на които правиш по 200 милиарда итерации. Няма как да мине за 0.25

1
enevlogiev avatar enevlogiev 1168 Точки

Здравейте, добавих тестове и авторски решения. Можете да ги свалите от инстанцията на изпита в judge

6
Simooo93 avatar Simooo93 81 Точки

На мен ми се струва некоректно на втора задача да пишат, че литрите ще бъдат от 1 до 1000, а да има 4 теста с литри над 10 000. Това ми изяде 40 точки.....

2
16/11/2015 18:03:17
naskoni avatar naskoni 68 Точки

Колега, какъв тип данни ползваше, за да не ти минават тестовете?

0
enevlogiev avatar enevlogiev 1168 Точки

Съжалявам колега, моя грешка. Коригирах нещата, вече имаш 100 точки. Ако някой друг се е опарил от същия проблем, да пише.

@naskoni
Няма значение типът данни, той ги режеше с регекс ; )

5
djc_bg2015 avatar djc_bg2015 923 Точки

Ами имах този проблем, и реших да пробвам да заместя {1,4} с + и проработи..

сега вече разбирам защо :)

0
16/11/2015 19:27:50
byclops avatar byclops 126 Точки

Ето и моите решеня:

https://github.com/byclops/JavaFundamentalsExam-15.11.2015

Задача 1: Няма нужда от коментар:)

Задача 2: И аз като повечето хора се затрудних докато се сетя да match-на и празните стрингове с .*? вместо .+?

Задача 3: Оставих я за накрая, защото имам лош опит с подобен тип задачи. Пак по тази причина я реших по най-елементарния начин, който ми хрумна - със отделен метод за всеки тип движение и без каквито и да е хитрини. Оптимизациите ги оставих за по-нататък, но не се наложи, защото всички тестове минаха от раз.

Задача 4: Тук загубих много време докато се сетя че трябва да ескейпвам къдравата скоба в regex-а. После се видях в чудо как да сортирам данните, но накрая реших да направя отделен брояч от HashMap<String,Integer> и нещата лека-полека се наредиха. По-сложните сортирания ги направих с поредица от sorted(), и се разминах без custom comparator.

1
supersane avatar supersane 234 Точки

Ето моето решение на 4та, като аз избегнах използването на регекс със сплитване и после заместване на ненужното. Понеже и аз не се имам много с регексите и от 2ра ми пушеше главата не исках до края на изпита да виждам регекс отново :D

0
bacuty avatar bacuty 55 Точки

Задачите бяха според мен добре подбрани като сложност,  ако си написал домашното за синтаксиса от първа трябва да можеш да вземеш 100 точки. Лично мен ме затрудняват най-много момента с това как точно да си обработя input-a за да му взема данните, понеже се впускам в прекалено сложни regex-и. Това за 4-та задача, но като съм гледала решенията на други задачи, горе-долу вече знам какво се използва , а не такива крайни :) извращения, към които прибягвам аз.

Иначе писането на comparator-и го пропуснах, като използвах TreeMap и освен това сортирах първо List<String> по азбучен ред и след това по дължина на стринга. Така запазва първото и второто. Лично ме притесни, че искаха да има по-един празен ред, без последния, :) та ги записвах в един list и после на принтвах без последния.Може би глупаво, ама не ми се мислеше, ще стане ли или не за повече.Все пак 2 задача хващах отначало само 40 :D.

3та.. алгоритъм половината, предъвкан в доста  задачи :).

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.