Поиск по этому блогу

понедельник, 28 октября 2013 г.

Список вопросов на собеседовании Java программиста

У меня вышло приложения для iOS. Называется Java справочник.



I. Основы ООП


1. Основные принципы ООП

2. Что такое инкапсуляция? Пример инкапсуляции на Java

3. Что такое наследование? Как реализовано наследование в Java

4. Что такое полиморфизм? Пример полиморфизма на Java 

5. Что такое абстракция? Пример абстракций на Java

II. Java Core


1. Класс StringTokenizer

2. Разница между final, finally и finalize()

3. Разница между String, StringBuffer и StringBuilder

5. Чем абстрактный класс отличается от интерфейса

6.  Переопределение и перегрузка методов в Java

7.  Что такое рефлексия в Java

8. Клонирование объектов. В чем отличие между поверхностным и глубоким клонированием

9. Что такое сериализация и десериализация

10.  Модификаторы доступа в Java

11. Как работает блок try-catch-finally

12. Что такое Autoboxing

13. Основные методы класса Object. Правила переопределения основных методов класса Object

14. Класс String

15. Разница между & и &&

16. Что такое сборщик мусора? Можно ли его вызвать?

Collection Framework


1. Разница между LinkedList и ArrayList

2. Разница между HashSet и TreeSet

3. Как устроена HashMap

4. Разница между HashMap и Hashtable

5. Разница между Vector и ArrayList

6. Разница между HashMap и TreeMap

7. Разница между интерфейсами Comparable и Comparator?

8. Для чего нужны классы Collections и Arrays?

SQL


Шаблоны проектирования


1. DAO (Data Access Object)

2. DTO (Data Transfer Object)

3. Singleton (Одиночка)


Get it on Google Play


Вопросы на собеседовании Java программиста. Класс StringTokenizer

Класс StringTokenizer предназначен для разбора строки на составные элементы. Используя этот класс можно выделить из строки слова, задав какие разделители находятся между словами.

Конструкторы класса StringTokenizer


1. StringTokenizer tokenizer = new StringTokenizer(String str) - с помощью этого конструктора мы можем создать объект, который позволит нам разбить строку str на слова разделенные пробелами или следующими символами: символ табуляций '\t', символ перевода строки '\n' и символ возврата каретки '\r'.

String str1 = "This is Sparta";
StringTokenizer tokenizer1 = new StringTokenizer(str1);

2. StringTokenizer tokenizer = new StringTokenizer(String str, String delim) - с помощью второго конструктора мы можем задать разделители использую второй параметр конструктора delim. Например, ";:,. " - тут последним разделителем задан пробел, если его не указать, то пробел не будет считаться как разделитель, если мы используем этот конструктор. 

String str2 = "This,is.second;example:of StringTokenizer";

StringTokenizer tokenizer2 = new StringTokenizer(str2, ",.:; ");

3. StringTokenizer tokenizer = new StringTokenizer(String str, String delim, String returnDelims) - используя этот конструктор, можно задать через третий параметр returnDelims, чтобы разделители включались в число слов. Если returnDelims равно true, то разделители будут включены в число слов, если false, то не будут.

String str3 = "This,is.third;example: of that post";
StringTokenizer tokenizer3 = new StringTokenizer(str3, ",.:; ", true);

Методы класса StringTokenizer


Для демонстрации того, как работать с классом StringTokenizer я буду использовать три основных метода этого класса:
1. Метод int countTokens() - возвращает количество слов разделенных заданными разделителями
2. Метод boolean hasMoreTokens() - возвращает true, если в строке есть еще слова, в противном случае возвращает false
3. Метод String nextToken() - возвращает следующее слово

Исходный код программы, показывающей как использовать класс StringTokenizer

import java.util.StringTokenizer;
 
public class StringTokenizerExample {
 
  public static void main(String[] args) {
 
    System.out.println("Example of how work first constructor of StringTokenizer"); 
 String str1 = "This is Sparta";
 StringTokenizer tokenizer1 = new StringTokenizer(str1);
 System.out.println("Count of tokens in string str1: " + tokenizer1.countTokens());
 while (tokenizer1.hasMoreTokens()) {
   System.out.println(tokenizer1.nextToken());
 }
 
 System.out.println();
 System.out.println("*******************************************************"); 
 System.out.println();
 
 String str2 = "This,is.second;example:of StringTokenizer";
 StringTokenizer tokenizer2 = new StringTokenizer(str2, ",.:; ");
 System.out.println("Count of tokens in string str2: " + tokenizer2.countTokens());
 while (tokenizer2.hasMoreTokens()) {
   System.out.println(tokenizer2.nextToken());
 }
 
 System.out.println();
 System.out.println("*******************************************************");
 System.out.println();
 
 String str3 = "This,is.third;example: of that post";
 StringTokenizer tokenizer3 = new StringTokenizer(str3, ",.:; ", true);
 System.out.println("Count of tokens in string str3: " + tokenizer3.countTokens());
 while (tokenizer3.hasMoreTokens()) {
   System.out.println(tokenizer3.nextToken());
 
 }
 
  }
 
}

Результат работы программы



четверг, 24 октября 2013 г.

Продвижение блога через Google Play и Android

Нужны новые клиенты? Оригинальный подход для привлечения новых посетителей на сайт придумали ребята из NewApp (www.newapp.pro).

Они создают мобильные приложения с контентом близким по тематике к материалам сайта.
Добавляют в приложение ссылки на сайт. Публикуют приложения в Google Play. После это народ скачивает интересующие их приложения и автоматически направляется на нужный сайт.
А если учесть, что качают приложения из Google Play днем и ночью, то и поток на сайт будет бесконечным!

Теперь появились мысли использовать их подход для продвижения своего блога ;-)
А NewApp пожелаю дальнейших успехов и побольше интересных решений )




воскресенье, 13 октября 2013 г.

Native JavaScript document.getElementById vs jQuery $()

Разница между нативным JavaScript методом document.getElementById() и jQuery методом $()

Метод document.getElementById() возвращает HTML DOM объект
document.getElementById('contents');

Метод jQuery $() возвращает jQuery объект, который является оберткой над DOM объектом и обеспечивает методы jQuery
var contents = $('#contents');


суббота, 12 октября 2013 г.

Native javascript .appendChild Vs jQuery .append() methods

Разница между нативным javaScript методом appendChild() и jQuery методом append заключается в следующем:
appendChild() - это чистый DOM метод (нативный javaScript метод) для добавления дочернего элемента.
document.getElementById('mainElement').appendChild(newElement);

append() - это метод библиотеки jQuery, позволяющий добавить некоторый контент или HTML к элементу. Также метод append() способен принимать несколько входящих параметров
$('#mainElemnt').append('Some text or HTML');

Как добавить рекламу AdMob в Android PhoneGap приложение

PhoneGap это инструмент, позволяющий разрабатывать приложения на JavaScript и конвертировать их в нативные приложения мобильных платформ (такие как Android и iOS). AdMob это платформа для подключения рекламных баннеров в ваше приложения за просмотры и клики по которым можно получать деньги. Здесь я расскажу, как подключить к Android PhoneGap приложению рекламу от Google AdMob. Для этого понадобится сделать следующее

1. Зарегистрироваться в AdMob и получить Publisher ID для подключения рекламного баннера.
2. Внести изменения в Android проект для отображения рекламного баннера

пятница, 11 октября 2013 г.

Справочник полезных рецептов для CSS3 и HTML5


1. Как сделать текстовое поле не редактируемым (how make input textfield non-editable)

Для того, чтобы сделать текстовое поле не редактируемым не нужно применять классы CSS, достаточно использовать атрибут readonly (можно писать так readonly="readonly" )
<input type="text" value="some text" class="gray_text" readonly>

2. Как сделать указатель мыши как указатель с пальцем при наведении на объект (how to change cursor to finger pointer when a user hovers over a object)

Есть элемент, при наведении на который необходимо менять курсор мыши на указатель.
<div class="menu_general">
  <p><a id="to_account_and_settings" class="ui-link">
    <img src="img/menu/account_settings.png"/>
  </a></p>
 
  <p><a id="to_expansions_extras" class="ui-link">
    <img src="img/menu/expansions_extras.png"/>
  </a></p>
 
  <p><a id="to_how_to_play" class="ui-link">
    <img src="img/menu/how_to_play.png"/>
  </a></p>
</div>

Для того, чтобы менять курсор необходимо описать в классе ui-link следующее cursor: pointer
.menu_general .ui-link {
    cursor: pointer;
}

четверг, 10 октября 2013 г.

Справочник полезных рецептов для jQuery Mobile


1. Как в jQueryMobile динамически поменять у кнопки атрибут data-theme (jQueryMobile changing button data-theme dynamically) 

Есть кнопка, которой задана определенная тема (Пока не все пользователи присоединились кнопка серая). При определенном событии (когда присоединились все пользователи) необходимо менять тему этой кнопки.

<a id="waiting_users" data-role="button" 
data-theme="c" data-inline="false" >Waiting for Players...</a>

Кнопка в исходном состоянии

Для того чтобы поменять тему кнопки напишем метод, в который будем передавать id кнопки и задавать новую тему, которую хотим установить
changeButtonTheme: function (id, theme) {
  var currentTheme = $("#" + id).attr('data-theme');
  $("#" + id).attr("data-theme", theme)
    .removeClass("ui-btn-up-" + currentTheme)
    .addClass("ui-btn-up-" + theme);
}

Вызываем наш метод и передаем в него id кнопки и новую тему
changeButtonTheme("waiting_users", "a");

Кнопка после изменения темы



Справочник полезных рецептов для JavaScript


1. iScroll disable native vertical scroll 
Популярная JavaScript библиотека для скроллинга iScroll4 http://cubiq.org/iscroll-4 позволяет создавать прокручивающиеся экраны в том числе и на мобильных устройствах. Возникает одна проблема - блокируется нативный скрол по вертикали. Для того, чтобы нативный вертикальный скроллинг снова стал работать нужно сделать следующее - в конструкторе scroll объекта переопределить метод onBeforeScrollMove .
screen_scroller = new iScroll('content-scroll-wrapper', {
  snap: true,
  momentum: false,
  hScrollbar: false,
  vScrollbar: false,
  hScroll: true,
  vScroll: false,
  // здесь другие методы                  
  onBeforeScrollStart: function ( e ) {
    if ( this.absDistX > (this.absDistY + 5 ) ) {
      // user is scrolling the x axis, so prevent the browsers' native scrolling
      e.preventDefault();
    }
  }
});

Справочник полезных рецептов для jQuery


1. Как установить атрибут стиля по id.  (jquery set style attribute by id)

Есть кнопка у которой есть id (id = "invite_more"). Кнопке задан стиль с атрибутом display и значением этого атрибута равным none. Необходимо периодически менять значение этого атрибута.
<a id="invite_more" data-role="button" data-theme="c" 
data-inline="false" style="display: none">
Invite more friends</a>

Поменять значение атрибута стиля элемента с определенным id можно с помощью следующей конструкции.
$('#invite_more').css({ "display": 'block'});

2. Как загрузить содержимое HTML-файла в div (jquery load html into div) 

Есть div которому задан класс. В этот div необходимо загрузить HTML из другого файла.
<div class="played_players_vertical_component">

Для это необходимо воспользоваться функцией jquery - .load("имя файла"). Тут мы сначала находим наш div по его классу, а потом загружаем в него содержимое HTML-файла.
$(".played_players_vertical_component")
  .load("components/played_players_vertical.html");