Java задачи с собеседований
6.27K subscribers
597 photos
6 videos
19 files
244 links
Задачи, тесты и теоретические вопросы по JAVA.

Репозиторий: https://github.com/proghub-official/java-interview
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
Что нужно подставить вместо знаков подчеркивания, чтобы программа вывела на экран "000"? public class SomeClass { public static void main(String[] args) { ____ for (int i = 0; i < b.length; i++) { System.out.print(b[i]); } } }
Anonymous Quiz
3%
int b[] = new int[];
76%
int b[] = new int[3];
1%
int b[];
14%
int b[] = new int[] {0};
6%
int b[3];
Какой метод нужно вызвать, чтобы инициировать перерисовку компонента?
Anonymous Quiz
13%
paint
38%
update
41%
repaint
8%
show
Поскольку интерфейс Runnable представляет собой альтернативный способ программирования потоков исполнения, можно ли в такой программе обойтись без класса Thread?
Anonymous Quiz
24%
да
8%
да, если не модифицировать свойства потока (приоритет и т.п.)
4%
да, если не прерывать поток
18%
да, если не требуется взаимодействие с другими потоками
46%
нет
Сколько комментариев в следующем примере кода: int x = 0; /* комментарий // комментарий /* int y = 1; // комментарий */ // комментарий */
Anonymous Quiz
43%
1 блочный, 0 строчных
27%
1 блочный, 1 строчный
5%
1 блочный, 2 строчных
14%
2 блочных, 3 строчных
11%
2 блочных, 1 строчный
👨🏻‍💻 Как преобразовать двумерный ArrayList<String> в массив с помощью stream API?

Создание двумерного ArrayList:

ArrayList<String> map = new ArrayList<String>();
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader("map.txt"));
String line = reader.readLine();
while (line != null) {
map.add(new String(line.strip()));
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}

Java задачи с собеседований
👨🏻‍💻 Вопрос от реального человека

Как запускать тесты по папкам или по тегам?

Пытаюсь запустить определённые тесты через консоль с помощью вот такой команды:

gradle test -PincludeTags="User_Service"
UserService - это @Tag.

Проблема в том, что он прогоняет все тесты, даже те, которые мне не нужно запускать. Подскажите, что я не так делаю? Может что-то в biuld.gradle нужно добавить?

Java задачи с собеседований
👨🏻‍💻 Вопрос от реального человека

Загрузка всех переменных из других активити при старте программы

Такая проблема: Я только начал изучать андроид студио.

Делаю программу, у меня есть три активити:
1.Главное меню где я ввожу некие данные(цыфры)
2.Настройки где есть переменные с цифрами. Они сохранены через Shared preferences.
3.активити где обрабатывается и выводится на экран результат сложения и умножения из данных 1 активити и тех данных что есть в настройках.

Но вот беда: при переходе из 1 активити в 3 выдает ошибку т.к. что бы загрузить переменные из настроек мне сначала нужно открыть эти настройки. А это не очень удобно.

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

Java задачи с собеседований
👨🏻‍💻 Вопрос от реального человека

SplashscreenActivity падение вниз?

Падает лого вниз как мне избежать этого? Установил через setTheme. Мой активити.

Мой активити.

        <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".ui.SplashscreenActivity">
</androidx.constraintlayout.widget.ConstraintLayout>

Мой стиль.

            <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
<item name="android:windowFullscreen">true</item>
</style>

Код.

@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.SplashTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splashscreen);

Java задачи с собеседований
👨🏻‍💻 Вопрос от реального человека

ReadWriteLock - внутри один объект блокировки или два?

У класса ReentrantReadWriteLock есть два метода на получение блокировки - readLock и writeLock. Между ними установлены некоторые правила взаимоотношений, по которым блокировка становится возможной.

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

Может быть я неправильно понимаю и там вообще используется другой внутренний механизм без явных объектов блокировки? Документация говорит что

A ReadWriteLock maintains a pair of associated locks, one for read-only operations and one for writing

Но не очень понятно как это трактовать.

Java задачи с собеседований
👨🏻‍💻 Вопрос от реального человека

Как поставить toster в kotlin?

Всем привет, как выводить toast пока твой сайт на WebView еще не загрузился? То есть, ты открываешь прилку, а у тебя вместо белого экрана показывается, что прилка загружается.

import android.annotation.SuppressLint
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.annotation.RequiresApi
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen


@SuppressLint("SetJavaScriptEnabled")
class MainActivity : AppCompatActivity() {


@RequiresApi(Build.VERSION_CODES.O)
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webViewSetup()
}

@RequiresApi(Build.VERSION_CODES.O)
private fun webViewSetup() {
val wb = findViewById<WebView>(R.id.wb_webView)

wb.webViewClient = WebViewClient()

wb.apply {
settings.javaScriptEnabled = true
settings.safeBrowsingEnabled = true
loadUrl("https://www.google.com/?hl=ru")
}

}


override fun onBackPressed() {
val wb = findViewById<WebView>(R.id.wb_webView)
if (wb.canGoBack()) wb.goBack() else super.onBackPressed()
}
}

Java задачи с собеседований
👨🏻‍💻 Вопрос от реального человека

Как мне разделить строку на равные части по 4?

String binary =
"10011101000011101001001011111000100110000111001101010000";

Java задачи с собеседований
👨🏻‍💻 Как подключить jpa batch без использования GenerationType.SEQUENCE

Столкнулся с такой ситуацией, что нужно записать большое количество строк в таблицу postgres, где ключем выступает поле типа string.

create table manual_security
(
isin_code varchar(12) not null,
emitent_id numeric,
update_date_time timestamp not null,
constraint manual_security_pk primary key (isin_code)
);

доступа к таблице у меня нет, изменить не могу. т.е. например добавить в нее поле типа int и create sequence manual_security_security_id_auto_gen increment 100;

я прочел в документации, что SEQUENCE is used for delegating the identifier generation to a database sequence.

по документации в случае GenerationType.IDENTITY Spring ИГНОРИРУЕТ батчевую вставку, даже если она включена в настройках.

т.е. чтобы использовать батчевую вставку - нужно, чтобы в классе entity полем был ключ с типом integer и GenerationType.SEQUENCE

вот так

@Id
@SequenceGenerator(name = "manual_security_security_id_auto_gen", allocationSize = 100, sequenceName = "manual_security_security_id_auto_gen", initialValue = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "manual_security_security_id_auto_gen")
private Integer securityId;

вопрос к знатокам hibernate - можно ли как-то включить batch и добиться быстрого батчевого сохранения строк в таблице где ключем выступает string.

сейчас класс и репозиторий выглядят так.

@Entity
@Table(name = "manual_security")

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@EqualsAndHashCode(of = "isinCode")
public class ManualSecurity {
@Id
@NotNull
@Column(name = "isin_code", nullable = false)
private String isinCode;
// остальные поля
}

public interface ManualSecurityRepository extends JpaRepository<ManualSecurity, String> {

}

сохарнение saveall коллекции из 4к записей занимает так около 10 минут.

настройки драйвера

jpa:
show-sql: false
open-in-view: false
database: postgresql
properties:
hibernate:
jdbc:
batch_size: 100

Java задачи с собеседований
👨🏻‍💻 Почему компилятор выдает ошибку когда я пытаюсь добавить объект в Set?

Не могу понять, почему компилятор выдает ошибку когда я пытаюсь добавить объект класса Rout в Set rout?

public class SystemManager {
Rout CI106 = new Rout("WizzAir", "Rome", "Berlin", 1, "06:00", "06:40", 25);

Set<Rout> rout = new HashSet<>();
rout.add(CI106);

Выдает ошибку: Cannot resolve symbol 'add'

Java задачи с собеседований
👨🏻‍💻 Ошибка при установке Progress Bar progressBar.setVisibility(View.VISIBLE)

Помогите с задачей, пожалуйста. Выдает такую ошибку

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference
at com.example.mvvm_test.view.MainActivity$4.onChanged(MainActivity.java:94)
at com.example.mvvm_test.view.MainActivity$4.onChanged(MainActivity.java:91)

Ругает за строчки с ProgressBar

mMyViewModel.getShowLoadingLiveData().observe(this, new Observer<Void>() {
@Override
public void onChanged(Void unused) {
progressBar.setVisibility(View.VISIBLE);
}
});
mMyViewModel.getHideLoadingLiveData().observe(this, new Observer<Void>() {
@Override
public void onChanged(Void unused) {
progressBar.setVisibility(View.GONE);
}
});



public class MyViewModel extends AndroidViewModel {
private final MutableLiveData<NumbersResponsePojo> pojoLiveData = new MutableLiveData<>();
private LiveData<List<Numbers>> numbers = new MutableLiveData<>();
private MutableLiveData <String> errorMessageLiveData = new MutableLiveData<>();
private final MutableLiveData<Void> showLoadingLiveData = new MutableLiveData<>();
private final MutableLiveData<Void> hideLoadingLiveData = new MutableLiveData<>();

private final WebRepo numberRepository;
private final DataBaseRepo dataBaseRepo;

public MyViewModel(Application application, WebRepo numberRepository) {
super(application);
dataBaseRepo = new DataBaseRepo(application);
numbers = dataBaseRepo.getAllFacts();
this.numberRepository = numberRepository;
}

void insert(Numbers numbers) {
dataBaseRepo.insert(numbers);
}

public void setPojoLiveData(NumbersResponsePojo pojoLiveData) {
setIsLoading(true);
this.pojoLiveData.setValue(pojoLiveData);
}

private void setIsLoading(boolean loading) {
if (loading) {
showLoadingLiveData.postValue(null);
} else {
hideLoadingLiveData.postValue(null);
}
}

public void getNumbers(String num) {
numberRepository.getNumbers(num)
.subscribe(new Observer<NumbersResponsePojo>() {
@Override
public void onSubscribe(Disposable d) {
}

@Override
public void onNext(NumbersResponsePojo numbersResponsePojo) {
Numbers numbers = new Numbers();
numbers.facts = numbersResponsePojo.getText();
numbers.number = numbersResponsePojo.getNumber();
numbers.time = System.currentTimeMillis();
setPojoLiveData(numbersResponsePojo);
insert(numbers);

setIsLoading(false);
//errorMessageLiveData.postValue("There is not items!");
}

@Override
public void onError(Throwable e) {
setIsLoading(false);
errorMessageLiveData.postValue("Internet is missing");
}

@Override
public void onComplete() {
}
});
}

public void getRandomNumbers(String num) {
numberRepository.getRandomNumbers(num)
.subscribe(new Observer<NumbersResponsePojo>() {
@Override
public void onSubscribe(Disposable d) {
}

@Override
public void onNext(NumbersResponsePojo numbersResponsePojo) {
Numbers numbers = new Numbers();
numbers.facts = numbersResponsePojo.getText();
numbers.number = numbersResponsePojo.getNumber();
numbers.time = System.currentTimeMillis();
setPojoLiveData(numbersResponsePojo);
insert(numbers);

setIsLoading(false);
}

@Override
public void onError(Throwable e) {

setIsLoading(false);
errorMessageLiveData.postValue("Internet is missing");
}

@Override
public void onComplete() {
}
});
}

public LiveData<NumbersResponsePojo> getPojoLiveData() {
return pojoLiveData;
}


public MutableLiveData<String> getErrorMessageLiveData() {
return errorMessageLiveData;
}
public void setErrorMessageLiveData(String errorMessageLiveData) {
this.errorMessageLiveData.setValue(errorMessageLiveData);
}

public LiveData<List<Numbers>> getDataFromDB() {
return numbers;
}

public MutableLiveData<Void> getShowLoadingLiveData() {
return showLoadingLiveData;
}

public MutableLiveData<Void> getHideLoadingLiveData() {
return hideLoadingLiveData;
}
}

Что не так? Спасибо

Java задачи с собеседований
👨🏻‍💻 Вопрос от реального человека

Можно ли передать из EditText в TextView не только текст, но и цвет текста, его размер и толщину?

У меня в активности есть ЭдитТекст, где я ввожу текст и изменяю его параметры (textSize, textColor,bold/italic) и фон. Всё работает.

Дальше по нажатию кнопки текст с параметрами должен передаваться в TextView в виджете. Я сделала код для передачи текста и фона из EditText в TextView и он работает, но как передать параметры текста я не знаю.

Пробовала сделать по аналогии, но с textSize у меня проблема с float, а с textColor то, что в ЭдитТекст нет метода getTextColor() и я не могу получить последнее значение textColor. Можно ли вообще передать текст с параметрами из ЭдитТекст в ТекстВьев?

Java задачи с собеседований