Сьогодні, в суботу, 4-го жовтня 2008-го, відбувся конкурс IT-фахівців «Программанія». Дізнався я про нього з developers.org.ua, де тепер часто можна прочитати якість актуальні IT Новини. Вирішив написати про цей конкурс, бо імхо конкурс дуже класний :)
На відміну від стандартних конкурсів на алгоритми, які вже трохи надоїли набридли, в цьому конкурсі пропонується заповнити анкету з питаннями (тести) по різних мовах програмування і технологіях. З кожної теми є ~12 питань, а тем цього разу було аж 28. На все-про-все дається 2 години, тому на все що знаєш навіть немає часу відповісти - потрібно відповідати на те, що знаєш найкраще.
А питання були зовсім не прості, і щоб відповісти на всі питання по якійсь темі, потрібно бути професіоналом в даній сфері. Деякі питання мені дуже сподобались, ось наприклад: деякі цікаві питання
Питання по .NET Application Development
Що з нижченаведеного можна створити, використовуючи C#?
- Бібліотеки класів
- Розширення для проектів інсталяції
- Програми командної стрічки
- Веб-аплікації ASP.NET
- Веб-сервіси ASP.NET
- Програми Windows Forms
- Класи для використання в MS SQL Server
Відповідь:
Веселе питання. Все :)
Питання по Java SE
1. Що буде, якщо виконати код:
public class Static {
static {
int x = 5;
}
static int x, y;
public static void main(String[] args) {
x--;
myMethod();
System.out.println(x + y + ++x);
}
private static void myMethod() {
y = x++ + ++x;
}
}
- Помилка на етапі компіляції
- Вивід на консоль: 1
- Вивід на консоль: 2
- Вивід на консоль: 7
- Вивід на консоль: 8
- Інша відповідь: ___
Відповідь:
І хто б міг подумати... На консоль виводиться 3. Виявляється це нічого страшного, що змінна x оголошена і в статичному ініціалізаторі, і як статичне поле - на початку ф-ції main, значення x буде 0. Далі просто.
2. Який результат виконання:
public class Main {
public static void main(String[] args) {
System.out.println(0.0 == -0.0);
}
}
- true
- false
- Помилка компіляції
- Інший варіант ___
Відповідь:
true. Взагалі-то це очевидно, але можна на мить засумніватись чи добре працює оператор рівності із типом double.
3. Що буде, якщо відкомпілювати таке:
class InnerClass {
int a1;
final int b1 = 10;
public void method(int a, final int b) {
class Test {
public void method() {
a1 = 5;
b = 6;
a = 5;
}
}
}
}Відповідь:
Помилка в рядку де b = 6 ібо the final local variable b cannot be assigned, since it is defined in an enclosing type, і в рядку де a = 5 ібо cannot refer to a non-final variable a inside an inner class defined in a different method.
Питання по Misc. SQL and DBMS Knowledge
Маємо таблички:
Team1
EmployeeID Role
----------- ----------
1 Programmer
2 Tester
NULL Contractor
і
Team2
EmployeeID Role
----------- ----------
2 Tester
3 Programmer
NULL Contractor
Що буде, якщо виконати
select Team1.Role, Team2.Role
from Team1
left join Team2 on Team1.EmployeeID = Team2.EmployeeID
? (варіантів відповідей не пишу, бо вони великі :) )
Відповідь:
Role Role
----------- ----------
Programmer NULL
Tester Tester
Contractor NULL
Виявляється нули не джойняться...
Питання по Dynamic HTML
1. Яке значення буде мати str після виконання:
var str = '123,456,123,456';
str = str.replace('123', '456');
- '123,456,123,456'
- '456,456,123,456'
- '123,456,456,456'
- '456,456,456,456'
- Нема правильних відповідей
Відповідь:
'456,456,123,456'. Функція replace замінює тільки перше входження, а не всі. Я відповів правильно, бо колись на такі граблі вже ставав. Але, думаю, багатьох можна на такому злапати :)
2. Що покаже alert?
alert(false || true + true + false || true + false);
- NaN
- false
- true
- 0
- 2
- Помилка через несумісність типів
- Нема правильної відповіді.
Відповідь:
2. Ось така-от магія приведення типів і оператора || :)
Треба ще сказати, що організовано все було по вищому класу. Всіх учасників пригощали чаєм/кавою, численними солодощами, можна було взяти халявні журнальчики... До речі спам не роздавали, а акуратно поставили в папку, яку подарували, за це організаторам величезний респект :) Серед усіх учасників була проведена лотерея, і майже кожен (було людей десь так ~60) отримав якийсь приз. Призи були в діапазоні 10-150грн, наскільки я можу оцінити. Навіть я отримав зелену бандану від Zyxel, тепер вчусь в'язати бандани :) А найбільше вразило те, що на сцену вийшла організаторка з Харкова, і заговорила до нас чистою українською мовою :) Це було класно, Харків знову виріс в моїх очах :) Видно, що орги хотіли догодити галичанам у всьому.
Отже, як на перший раз, що конкурс проводиться у Львові, вийшло дуже незле. За це подяка GlobalLogic, харків'янам, та іншим грошовитим орг-ам. Думаю таких конкурсів у нас замало, і потрібно частіше робити подібні конкурси серед студентів (на знання технологій).
P.S. Прикольно, я перший у Львові по DHTML. Дрібничка, а приємно :)
P.P.S. Кількість учасників по містах: Харків - 832, Київ - 164, Львів - 58
пс. На DevDays теж бачились :)