Блог java-talks

Регистрация

Календарь

<< Ноябрь 2010  

Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Теги

economics  gwt  self-perfection  tech  toefl 

На странице

RSS - подписка

Java talks

1|2|3|4>>

Google I/O 2009 - Best Practices for Architecting GWT App - Тезисы

http://www.youtube.com/watch?v=PDuhR18-EdM

- в RPC запросах использовать только имплементации коллекций

- Запросы делать с помощью шаблона Команда
+ помогает построить систему кеширования
+ "batching mechanism" возможность отсылать несколько запросов одним реквестом. (http://www.youtube.com/watch?v=USlUYkBHiHA 21мин.)
+ организация Error handling
+ организовать Undo/Redo механизм

- использовать EventBus;

- использовать Speed Tracker;

- использовать lazy-inizialiization для пошагового рендеринга виджетов

- использовать UIBinder, вместо div с идентификаторами(медленно проходит сравнение с каждым элементом)

- делать обработку ивентов на MouseDown

- мониторить быстродействие, количество кода при загрузке, быстроту загрузки при стандартных действиях пользователя

Цитата дня: "No two people will give the same answer for what MVC actually means."
Ray Ryan(Google inc.)

Теги: gwt

Вопросы по Concurrency

1. Назовите различия между Collections.synchronizedMap(new HashMap()) и ConcurrentHashMap.
2. Что такое кооперативная многозадачность и она ли ли в Java. Если да, то какие преимущества. Если нет, то какая тогда в Java?
3. Что такое "зеленый потоки" и они ли ли в Java (в HotSpot JVM.6)?
4. Различия в интерфейсах Runnable и Callable.
5. Напишите минимальный неблокирующий стек (всего два метода — push() и pop()).
6. Напишите минимальный copy-on-write ArrayList (всего четыре метода — void add(int indx, int item), int get(int indx), void remove(int indx), int size()).
7. Различя между Thread.isInterrupded() и Thread.interrupded().
8. Что происходит при вызове Thread.interrupt()?
9. Некоторые из следующих методов deprecated а некоторые и не были никогда реализованы. Какие? Thread.interrupt(), Thread.stop(), Thread.yield(), Thread.suspend(), Thread.resume(), Thread.join(), Thread.start(), Thread.run(), Thread.sleep().
10. Что Вы знаете о асинхронных вызовов методов? Есть ли это в самом языке Java? Если есть, то как реализовано? Если нет, то как бы Вы реализовали?
11. Перечислите ВСЕ причины по которым может выскочить InterruptedException.
12. Что изменилось между JMM до Java 5 и NewJMM после Java 5?
13. В классе String все поля финальные. Можно ли убрать ключевое слово финал? Ведь сеттеров все равно нет — следовательно поля нельзя переустановить.
14. Что такое ordering, visibility, atomicity, happend-before, mutual exclusion. И показать на примерах volatile, AtomicInteger, synchronize{} — что из вышеперечисленного списка присутствует и при каких вариантах использования.
15. Назовите отличия synchronize{} и ReentrantLock.
16. Что из данных вызовов создает happend-before: Thread.sleep(), Thread.join(), Thread.yield(), Thread.start(), Thread.run(), Thread.isAlive(), Thread.getState()?
17. Перечислите известные Вам способы борьбы с priority inversion, назовите классы систем где они особенно опасны.
18. Перечислите известные Вам способы 1)избежать 2)побороть возникшие deadlock-и (представьте, что вы пишете ядро RDBMS).
19. Расскажите о паттернах Reactor/Proactor?
20. Что такое "monitor"?
21. Что такое "private mutex"?
22. Что такое "priority inheritance"?
23. Что такое "backoff protocol (expotential backoff)"?
24. Что такое "task stealing"?
25. Что такое "ABA problem"?
26. Что такое "test-end-set"?
27. Что такое "test-and-test-end-set"?
28. Что такое "spin lock"?
29. Что такое "sequential consistency"?
30. Что такое "sense-reversing barrier"?
31. Что такое "safe publication"?
32. Что это за свойство — "reentrancy"?
33. Что такое "recursive parallelism"?
34. Что такое "iterative parallelism"?
35. Что это за вариант архитектуры "pipeline"?
36. Что такое "poison message"?
37. Что такое "mutual exclusion"? Примеры как добиться в Java.
38. Что такое "condition waiting"? Примеры как добиться в Java.
39. Преимущества SheduledThreadPool перед java.util.Timer.
40. Различия между java.util.concurrent.Atomic*.compareAndSwap() и java.util.concurrent.Atomic*.weakCompareAndSwap().
41. Что в SynchronousQueue уникально для BlockingQueue.
42. Что такое "рандеву"? При помощи каких классов в Java его можно организовать?
43. Что такое "false sharing". Может ли происходит в Java. Если есть, то приведите примеры и как бороться. Если нет, то как побороли разработчики JVM.
44. Thread.getState() возвращает экземпляр Thread.State. Какие возможны значения?
45. Напишите простейший ограниченный буфер для многих производителей/многих потребителей с использованием synchronize{}. С использованием ReentrantLock.
46. У ReentrantLock созданного с аргументом true все же один из методов захвата блоктровки — не fair. Какой? Как это обойти?
47. Приведите наиболее существенное отличие между CountDownLatch и Barrier.
48. Что Вы знаете о Erlang? Что в нем есть существенного связанного с многопоточностью такого, чего нет в Java?
49. Что Вы знаете о CSP? Что в нем есть существенного связанного с многопоточностью такого, чего нет в Java?
50. Отличие Thread.start() и Thread.run()?

Вопросы на собеседование

III. Collections framework
1. Назовите основные интерфейсы коллекций и их имплементации.
2. Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
3. Чем отличается HashMap от Hashtable?
4. Чем отличается ArrayList от Vector?
5. Обясните отличия между HashSet, LinkedHashSet, TreeSet.
6. Каким образом можно синхронизировать методы HashMap, ArrayList?
7. Особенности интерфейса Set.
8. Каким образом можно отсортировать коллекцию?
9. Как правильно удалить элемент из ArrayList?

IV. Multithreading
1. Каким образом можно создать поток?
2. Какие способы синхронизации в Java?
3. Как работают методы wait и notify/notifyAll?
4. Чем отличается работа метода wait с параметром и без параметра?
5. Как работает метод Thread.yield()? Чем отличаются методы Thread.sleep() и Thread.yield()?
6. Как работает метод Thread.join()?
7. Что такое dead lock?
8. Как правильно завершить работу потока? (Иногда говорять, убить поток).
9. На каком объекте происходит синхронизация при вызове static synchronized метода?
10. Для чего используется ключевое слово volatile?

V. Сериализация
1. Для чего используется ключевое слово transient?
2. Как изменить стандартное поведение сериализации/десериализации?

VI. Swing
1. Что такое Event Dispatch Thread (поток обработки событий)? Как он работает?
2. Как можно производить обработку событий клавиатуры в JTextField?
3. Для чего исользуется класс SwingWorkers?

VII. JDBC
1. Этапы работы с базой данных с использованием JDBC?
2. Как создать Connection?
3. Чем отличается Statement от PreparedStatement?
4. Как вызвать хранимую процедуру?
5. Как правильно закрыть Connection?

VIII. Hibernate
1. Что такое lazy-initialization?

IX. JSP, Servlets
1. Чем отличается redirect от forward?
2. Как сделать redirect незаметно для пользователя?
3. Какие скоупы переменных существуют в JSP?
4. Какие есть методы отправки данных с клиента на сервер? Чем они отличаются?
5. Методы сервлета (обычно имеется ввиду HttpServlet).
6. Чем статический include отличается от динамического? (вопрос по JSP)

X. EJB
1. Какие есть типы бинов?
2. Какие есть типы session bean'ов?

XI. Базы данных
1. Что такое нормализация.
2. Какие есть типы связей в базе данных. Приведите пример.
3. Что такое primary key (первичный ключ)?
4. Что такое foreign key (внешний ключ)?
5. Что такое индексы в базе данных? Для чего их используют? Чем они хороши и чем плохи?

XII. SQL
1. Какие есть типы JOIN'ов. Кратко опишите каждый из типов.
2. Что такое LEFT JOIN, RIGHT JOIN? Чем они отличаются?
3. Для чего используется слово HAVING?
4. Задача: есть две сущности АВТОРЫ и КНИГИ, связь М-М (многие к многим). Создайте структуру таблиц для этих сущностей и напишите запрос, который выберет всех авторов, которые НЕ являются соавторами ни к одной из книг.D

DataBase theory

ACID - set requirements for stable and predictable database workability.

Atomicity — Атомарность - requires that database modification is provided at all or nothing change.

Consistency — Согласованность - requires that database must be consistent before and after transaction

Isolation — Изоляция - requires that other operation cann't get data that is modified during transaction is not yet complited.

Durability — Долговечность - requires that database can restore all commited transaction modifications against any database failure.

 

Normalization - is process of changing database structure to avoid anomalies(problems). There are seven forms of normalization. Main three of them:

First normal form (1NF or Minimal Form) - each cell conatins single value and there is no repaeting groups( columns with same meaning(e.g. telephone#1,telephone#2,..))

Second normal form (2NF) - all non-key attributes in table are functionally dependent on all possible key attributes values.

Third normal form (3NF) - every non-prime attribute is non-transitively dependent on every key of the table

 

Optimistic vs. Pessimistic locking

Optimistic Locking is a strategy where you read a record, take note of a version number and check that the version hasn't changed before you write the record back. If the record is dirty (i.e. different version to yours) you abort the transaction and the user can re-start it.

Pessimistic Locking is when you lock the record for your exclusive use until you have finished with it.

 

Hibernate defines and supports the following object states:

Transient - an object is transient if it has just been instantiated using the new operator, and it is not associated with a Hibernate Session. It has no persistent representation in the database.

Persistent - a persistent instance has a representation in the database and an identifier value. Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work completes. 

Detached - a detached instance is an object that has been persistent, but its Session has been closed.

 

Hibernate Polymorphic queries 

A query like "from Cat" returns instances not only of Cat, but also of subclasses like DomesticCat.

Теги: tech

Common database development recommendations

- use appropriate indexes. Foreign keys should have indexes on them. If you're using a field in a WHERE you should have an index on it.

- use foreign keys. All foreign keys are guaranteed to point to an entity that exists -you should be using it. 

- always use surrogate keys( those keys that have absolutely no meaning outside the system)

- do not use DISTINCT

- favour joins over aggregation(GROUP BY). Joins are much faster.

- use VIEWs in complex queries.

- use prepared statements

Теги: tech

About SQL studying

 

     After few unsuccessful job interviews during last time I understood that database knowledge is very important and I don't know it in enough amount.

    I started from performing exercises on very nice site for studying SQL www.sql-ex.ru . In few last days I raised up in rating for more than 10000 positions. Now my current position is 929 with 34 score points.

    In the nearest future I am going:

 - get maximum results in www.sql-ex.ru for improving sql language knowledge and sql query optimizations;

 - pass exam on www.JavaBlackBelt.com for improving my theoretical skills;

 - learn more about stored procedures, functions, triggers and so on;

 - learn by heart main definitions ( e.g.  Indexing, Heap, B+ tree, Transactions and concurrency, ACID rules and etc.)

 Hope that I'ill do that in the nearest week and try to get better job once more.))

 

Do you like to eat out or eat at home?

INTRODUTION (introduces the essay topic, 3-5 sentences , clearly gives your opinion)

[general statement about the topic of your TOEFL essay] All people decide for them whether eat out or not. [discuss both sides of the argument] There are many advantages and disadvantages for both cases. There are situations, when eating in fast food restaurants saves your time; therefore, from the other point of view, preparing food by yourself may be more suitable for personal requirements. [thesis statement - provides the answer to the question of the essay and tells the reader exactly what the author’s opinion is] As for me, it must be reasonable combination of two sides. 

BODY [main ideas and details; each new idea should be a new paragraph ; 3 – 4 body paragraphs.]

 [to begin with, first, first of all, for one thing, in the first place]

 [topic sentence]

         To begin with, eating in different restaurants gives possibility to taste traditional dishes from kitchens of all countries the world. [supporting ideas] Almost in all big cities there are many Chinese, Japanese, Italian, Mexican and other restaurants. It helps to feel you all colour of tastes.  As for me, my favorite kitchen is Japanese because its traditional dishes are very interesting, delicious and exotic.

 [next, second, in addition to the previous point, moreover]

To be continues...

Теги: toefl

Советы от руководителя нашей компании.

Сегодня нашел заметки, которые я записал около года назад, когда общался с  руководителем нашей компании по разработке програмного обеспечивания. Он рассказывал об изменениях направления ведения бизнеса компании и о выходе на международный рынок: 

- США не особо дают проекты в Россию и Китай, так как это их потенциальные враги.

- Теперь будет делаться уклон на разработку коробочных продуктов, так как аутсорсинг становиться невыгодным.

- Достаточно нескольких сильных разработчиков(4-6) для написания хорошего коробочного продукта.

- Актуальные направления в разработке программного обеспечения:

-- финансовая аналитика. Написание продуктов для построения модели поведения финансового рынка. Достаточно хотя бы раз дать правильный прогноз, и будет совсем не сложно найти инвестора.

-- узкоспециализированная отрасль. Например, геодезия. Берется проба в нескольких местах, и по этим данным строится модель для определения количества и формы окладов нефти, например.

- постсоветская модель управлением персонала отличается от других. В американской - горизонтальная схема управления. На постсоветской - из-за менталитета должна быть обязательно вертикальная власть. Всегда должен быть главный.

- для основной массы заказчиков главное чтобы работало. Намного лучше чтобы работала вся функциональность с багами, чем только часть, но правильно. Баги можно и потом дофиксить. Из-за этого пункта можно пренебречь тестерами.

 - сама русская (украинская) компания на мировом рынке не ценится. Обязательно должен быть иностранная компания - партнер. Кроме того сложно самому проанализировать, что сейчас актуально и понять чужой менталитет на мировом  рынке.

- Компания численностью около 50 человек считается средней компанией на рынке короб. продуктов, и маленькой в плане аутсортсинга.

- русский рынок не актуальный. Все уже куплено в плане госзаказов, а в других формах предоставления ПО - просто украдут.

- Есть ряд проблем с адаптацией порталов. Никто из работников компании заказчика портала не готов и не хотят с ними работать (дополнять контентом, делится информацией и т.д.).

- Отдается преимущество open-source продуктам. Так, как из-за монополизации, цены на коммерческие продукты очень большие.

- Использовать уже готовые решения всегда лучше ( из прошлых проектов, из open source проектов, и т.д.). Для этого важно организовать хорошую базу знаний, чтобы передавать опыт. Также нужно стараться выбрать оптимальные технологии и самый оптимальный способ их применения.

- Времени у заказчиков, как правило, нету, поэтому нужно самому предложить ему кучу вариантов решения проблемы и с ним выбрать наиболее подходящее.

- Основное количество времени программистов должно уходить на поиск ОПТИМАЛЬНЫХ решений. Меньше - на написание кода.

Тренинг об искусстве импровизации в жизни

 

     Вчера был на тренинге создателя и художественного руководителя театра — студии импровизации, и хочу выделить основные мысли, которые прозвучали:

- такого понятия как "талант" нету. Есть полученные в детстве комплексы, над которыми нужно работать и избавляться

- внутренний голос. Когда играешь, нужно постоянно думать проговаривать про себя то, что думает герой, которого играешь. Например, если ты продаешь продукт, внутренним голосом нужно постоянно проговаривать, что твой продукт самый качественный, самый дешевый. Нужно во всё это ПОВЕРИТЬ. И ты искренне удивишься, если тебе укажут на лучший товар, чем твой. Внутренняя речь выражается извне; 

- чем больше человек раскрепощённый, тем он более счастлив; 

- субъективные и объективные законы времявосприятия. Нужно учиться контролировать течение времени и использовать это в каждодневной практике. Это позволит, например, пока собеседник говорит и не несет полезной информационной нагрузки, отключиться мысленно от разговора и за это время продумывать последующие высказывания, когда он закончит;

- опыт. Есть 3 типа опыта: личный опыт(самый ценный), опыт наблюдателя, косвенный опыт. Детально представляя косвенный опыт в себя в уме, он переходит в личный опыт. Поэтому можно представлять предстоящую встречу как можно более детально, и в результате у вас появится опыт прохождения таких встреч

- есть только 5 ответов на любой вопрос: да, нет, неопределенность, игнорирование, смена инициативы (встречный вопрос)

- фокусировка(zooming) - нужно часто при разговоре приближаться - отдаляться, потому что зрачок может фокусироваться на одном расстоянии постоянно только около 300 секунд. 

Теги: self-perfection

Servlets and JSP

1. redirect = client, request dispatch = server

- response.sendRedirect(“http://www.google.com&rdquo;);

 

- RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);
view.forward(request,response);

 

2. ServletConfig and ServletContext

 

- ServletConfig’s main job is to give you init parameters.

- ServletContext — all web app; ServletConfig — servlet scope;

 

3.  Servlet — JSP

JspWriter — out
HttpServletRequest —request
HttpServletResponse —response
HttpSession —session
ServletContext — application
ServletConfig —config
Throwable —exception
PageContext —pageContext
Object —page

 

4. < jsp:include / > vs < %@ include file=”…”% >


The include directive inserts the SOURCE of “Header.jsp”, at translation time.
But the < jsp:include / > standard action inserts the RESPONSE of “Header.jsp”, at runtime.

 

Теги: tech

JSON+REST vs. XML+SOAP

Google announced that they are getting ready to kill their SOAP API. XML+SOAP was a good milestone in the history of integration but it is now time to look at the next milestone and that next milestone is JSON+REST. 

Reason #1

JSON is a lot simpler than XML+XML 

Reason #2
Browsers can consume large amount of JSON much more efficiently than they can consume large amount of XML 

Reason #3

REST interfaces are much easier to design and implement than SOAP interfaces: verbs are already defined, exception semantics are already defined, caching semantics are already defined, versioning semantics are already defined, authentication and access control are already defined. All you really need to focus on are modeling resources using JSON, modeling URL hierarchies, modeling search patterns and modeling batching for performance improvements.

Reason #4

The deeper problem with SOAP is strong typing. WSDL accomplishes its magic via XML Schema and strongly typed messages. But strong typing is a bad choice for loosely coupled distributed systems. The moment you need to change anything, the type signature changes and all the clients that were built to your earlier protocol spec break.

Теги: tech

British breeding.

Now I am working in one team with British developers. I was amazed of their manners.

Breeding is differs a little from Post-Soviet nations. Here is shortcut of our communication:

 

Project which I develop.

I'm working on the automation of UK's largest direct and online supplier of trade tools, accessories and hardware products. More technically:
Global trade counter system and online e-commerce solutions. Projects based on e-commerce ATG platform and distributed Oracle-based databases infrastructure.

New company, new projects, new people, new opportunities.

Now I am working in one of the biggest IT companies on Ukrainian market.

Analysis of concrete job interviews.

 

#1 Company with position for developing medical projects

Asked:

to write simple application for calculating bowling points

My imperfection:

bad knowledge of Eclipse IDE

Conclusion:

investigate Eclipse (in process)


#2 Company with position of developer for Norwegian company for bank systems

Asked:

to know basic algorithms, know databases, know English

My imperfection:

bad knowledge of English

bad knowledge of databases

Conclusion:

study English (in process), study databases(in process)


#3 Company with position of developer for Dutch customers

Asked:

to know nuances of core Java and Servlets\JSP, know English

My imperfection:

bad knowledge of English

Conclusion:

study English (in process)

 

#4 Company with position of developer of e-commerce projects for USA customers

Asked:

to know nuances of core Java, databases, English, JavaScript,  design patterns

My imperfection:

bad knowledge of English

bad knowledge of databases

do not know JavaScript

Conclusion:

study English (in process), study databases(in process)

 

#5 Company with position of developer for Netherlands customers

Asked:

to know English

My imperfection:

bad knowledge of English

Conclusion:

study English (in process)

 

#6 Company with position of developer for Ukrainian banks

Asked:

to know JavaScript

My imperfection:

do not know JavaScript

Conclusion:

-


#7 Company with position of developer for USA customers

Asked:

knowledge of English, core Java, mainstream frameworks, design patterns, refactoring, databases, build tools

My imperfection:

bad knowledge of English, databases, build tools

Conclusion:

study English (in process), databases(in process), build tools

 

#8 Company with position of developer

Asked:

to write simple Java SE application 

My imperfection:

-

Conclusion:

-

 

#9 Company with position of JavaFX developer

Asked:

1. Implement business logic of standalone javafx application

2. Developing UI on Javafx — controls, layout, implementing MVC model

3. Write efficient code and coach our developers with best practice in javafx

My imperfection:

No practice of coaching

Conclusion:

-

Searching for a new job.

 

    After month of relaxing and passing exams in my university I had began searches for a new job. At first I sent my CV to most interesting propositions on the market. It was near ten companies that had vacancies for either development of interesting Java project or Flex developers. 

    Unfortunately no one company witch needed Flex developers responded. I think the main reason is I haven't working experience with Flex and portfolio of my works. 

But almost all companies witch needed Java developers answered. At first I had telephone conversation with HR and followed-up interview. In this article I want to describe main tendentious that I saw during passing interviews for position of middle Java developer.

 

Non technical

  • The most frequently asked question is “Why do you want to change company?”(I didn’t tell that I already leave my previous job). The correct answer for this question is that on previous job you had exhausted all opportunities and now there is no possibility of professional growth for you. I do not recommend to tell about your real problem. Also it is not recommended to tell that you want to change work because you had low salary on previous place.
  • In almost all companies I spoke some time in English for testing my communication skills in English.

    On only last interviews I understood some important thing. It is doesn’t matter what you say. Important only  to follow grammar rules and maybe pronunciation . They ask tree questions. For Example: “Whom do you see you for five years?” , “Tell about your hobbies.” , “Tell about most interesting project that you took part in.”.  These questions are used for testing your knowledge of future, present and past tenses accordingly. That’s all! They are not interested in your projects. Because they are HRs. They do not understand anything in technical field. Their aim is to determine level of your English. So say anything (i.e. how you developed software for searching aliens  for NASA).

Technical

  • Very nice reaction was when I mentioned some phrases from books of famous writers like Martin Fowler, Kent Beck, Erich Gamma and especially Josh Bloch. The good result was when I said on few interviews: “As said Josh Bloch that the best way of implementing Singleton pattern by the means of enums.”
  • Nice reaction was when I mentioned that I have a technical blog.
  • As for technologies, concepts and frameworks:

        - new Java language features;

        - design patterns, refactoring;

        - web services, servlet\jsp;

Hope it will help someone.

PS. :  2 companies gave negative result; 2 companies with positive result; 3 companies in the active process   

-    

Studying Wicket framework.

 I began to study new component-based web application framework for Java which called Wicket. Main accent in it is made on application rapid development with difficult user interface. It distributed under Apache license so it free and open source. Main goals of following framework are:

  • Simple and quite fast development 
  • All code consists of Java and HTML. And there is no any XML configuration files which differs to Spring MVC, Struts, Java ServerFaces and other frameworks
  • Solves «Back button» problem
  • Components written in Wicket are fully reusable
  • It supports Ajax and there is no need for writing any JS code with this framework 
  • Secured, easy to integrate with Java security
  • No complex tags 

 
   Main disadvantage that Wicket doesn't support Portlet API officially. That means that some bugs may appear in portlets based on aforesaid framework. 

   It doesn't support any JSR standard. That means that is is not supported by Java Community Process. By the way only JSF framework supports JSRs.

   Also Wicket is quite new and no so popular. There are only several books published about it:

  1. Wicket in Action (July 15, 2008) written by Martijn Dashorst and Eelco Hillenius and is published by Manning which I read.
  2. Pro Wicket(September 2006)  written by by Karthik Gurumurthy, is the first book about Wicket, and covers Wicket 1.2. It was published by Apress. As for me it is to old so I didn't read it and do not plan to do this :)

Studying Flex.

After reading few books about Adobe Flex and ActionScript I decided to write some sample of basic site based on these technologies. Here screen of it:

Nothing special, only use of standard components without any back ends.

I leave my job.

I leaved my job and now I have more time for studying new technologies. I started from deeper learning of RIA or more exactly — Flex platform.

Why do you think people attend college or university?

    Colleges and universities are places where students get knowledge and experience in some fields. There are different reasons why people attend them. For example, some people want to change their present situation by obtaining some speciality, some of them want to continue to study after high school and some want to became more independent from their parents. 

    First of all, students can learn new knowledge studying either in college or university. They attend lectures and seminars listening to teachers and professors. During this they get different information for their future profession. During education they have a lot of tasks and it helps students to study how to solve problems and organize their time. 

    Secondary, one of the most important reasons is students life. During education students talk with teachers and each other which helps them to improve communication skills. Also there are many student organizations which help students to meet new friends and interesting people or evolve their talents. 

    In most cases students choose college in other city or country and live there without parents. This helps them to become more independent. Hostel life helps to find friendship with different types of people.

    In general, you can read books, science journals and obtain same knowledge yourself. But, as for me, in universities you learn to cooperate with different people and it is very important for future life. 

Теги: toefl

1|2|3|4>>