Anda di halaman 1dari 20

Test for Developer

Human Capital PT BIT | 2019Q4r01


Tugas Logika:
Terdapat 12 soal yang bisa dijawab oleh kandidat

● Soal Tes Frontend khusus dijawab untuk frontend / full-stack developer


● Pilih sedikitnya 5 dari 6 soal tes logika untuk kandidat backend developer
● Pilih sedikitnya 3 dari 6 soal tes logika untuk kandidat frontend / full-stack developer
● Kerjakan semua SQL task untuk backend / full-stack developer
● Sertakan jawaban dalam bentuk source code.
● Pilihan tingkat kesulitan akan menentukan seberapa menarik resume anda
● Performance test bersifat opsional - kandidat yang dapat menjawab dengan tepat akan mendapat keistimewaan
dalam proses rekrutmen ini
● Bagi yang bisa memberikan Big O notation dan menulis algoritma paling efisien pada tes logika dan peforma, akan
mendapatkan keistimewaan dalam rekrutmen ini

Untuk soal tes frontend diharapkan untuk bisa menjawab dengan react atau angular. Sesuai dengan penempatan industri
yang anda minati.

Untuk tes logika dan performance diharapkan untuk bisa menjawab dengan java, javascript atau golang . Sesuai dengan
penempatan yang anda minati.
Frontend Test
Tes Front-end:
Anda adalah Frontend Engineer perusahaan BPM (Business Process Engineering). Saat ini tim belum memiliki anggota UI/X untuk merancang
aplikasi web mereka sehingga anda harus cukup kreatif dalam merancang ini. Ini adalah aplikasi prototype to-do list yang berjalan secara
offline.

Dalam aplikasi ini, pengguna diharapkan melakukan beberapa aksi berikut ini:
● Tambah, hapus dan edit tugas-tugas anda
● Tandai tugas sebagai “selesai”
● Kategorisasi dari to-do list tersebut
● Filter tugas-tugas anda berdasar status, kategori dan search keyword
● Dapatkan data dari REST API publik manapun (bisa berupa cuaca, jam, lokasi dll)

Perhatikan Batasan-batasan berikut dalam mengerjakan:


● Gunakan animasi untuk loading (digunakan saat sedang menginput data dan mengambil data dari API)
● Gunakan React dengan Redux-Saga
● Gunakan axios atau fetch untuk mendapatkan data dari API
● Lampirkan screenshot dari aplikasi di readme.md
● Nilai Plus: jika bisa gunakan drag-and-drop untuk mengurutkan daftar
● Karena ini prototype, tidak perlu ada komunikasi dan simpan data. Hanya cukup dapatkan dan tampilkan saja.
Coretan simpel rekan 1 tim anda untuk membantu anda visualisasi hasil akhir

Catatan: visualisasi di atas hanya untuk membantu anda. Tim anda memberi anda kebebasan untuk bisa lebih kreatif
Logic Test
Level: Easy

Tugas Logika 1: Perfect Two 💖

Diberikan array berisi n integer. Berikan index dari kedua angka yang jika dijumlahkan bisa
menjadi sama dengan target yang diberikan.

Asumsikan bahwa semua input ini akan memberikan 1 solusi saja. Jangan mengulang angka
yang sama!
Contoh Array:
[2,7,11,15]

Sample Input: Sample Input: Sample Input: Sample Input: Sample Input:
9 22 13 11 19

Sample Output: Sample Output: Sample Output: Sample Output: Sample Output:
[0,1] [1,3] [0,2] <no way> <no way>
Level: Hard

Tugas Logika 2: Hot Dog

Ada 1 list dictionary kata-kata, contoh: ["hot", "dot", "dog", "lot", "log"]

User akan memberikan 2 input kata-kata (bisa saja tidak ada di dalam dictionary).

Output adalah urutan untuk bisa mencari cara paling singkat untuk mengubah kata pertama
menjadi kata kedua, namun, tiap langkah hanya bisa mengubah 1 huruf

Sample Input: Sample Input: Sample Input: Sample Input: Sample Input:
hot dog hot dog hit dog hit dig dot red

Sample Output: Sample Output: Sample Output: Sample Output: Sample Output:
hot dot dog hot dot dog hit hot dot dog hit hot dot dog <no way>
dig
Level: Medium

Tugas Logika 3: Programmer IT


We are given a string input and a array of dictionary.

Example dictionary: ['pro', 'gram', 'merit', 'program', 'it', 'programmer']

Find all method we can break the input string into strings inside dictionary!

Sample Input: Sample Input: Sample Input: Sample Input: Sample Input:
program programit programmerit programlala proletarian

Sample Output: Sample Output: Sample Output: Sample Output: Sample Output:
pro, gram pro, gram, it pro, gram, merit <no way> <no way>
program program, it program, merit
programmer, it
Level: Medium

Tugas Logika 4: Hasil Palindrome Terbesar


Palindrom adalah angka yang sama jika dibaca dari kiri atau kanan (misalnya 12321, 6226, dsb).

Saat ini diketahui bahwa hasil palindrom terbesar dari perkalian 2 bilangan 2 digit adalah 9009 = 91 * 99

Dengan berbekal input integer n sebagai jumlah digit (asumsikan n ≤ 4), carilah palindrom terbesar dari perkalian angka n
tersebut!

Sample Input: Sample Input: Sample Input:


1 2 3

Sample Output: Sample Output: Sample Output:


9 9009 906609
Level: Easy

Tugas Logika 5: Jual-beli Saham


Harga saham tiap hari diberikan dalam sebuah array.

Carilah profit tertinggi yang bisa didapatkan dari memberi dan menjual. Hari beli < Hari Jual.

Algoritma cukup untuk mencari 1 kali pembelian dan 1 kali penjualan

Sample Input: Sample Input: Sample Input:


[5, 6, 15, 3, 10, 22, 15] [10, 15, 8, 7, 14] [100, 90, 80, 75, 65]

Sample Output: Sample Output: Sample Output:


19 7 Harga selalu turun
Level: Medium

Tugas Logika 6: Angka ajaib

Seorang ahli matematika bernama Kaprekars menemukan: misal ada 4 digit angka (yang terdiri
dari minimal 2 angka berbeda) dan anda lakukan serangkaian operasi berulang, anda akan
menghasilkan angka ajaib 6174. Operasi tersebut antara lain:

● Buatlah 2 angka dari hasil mengurutkan 2 angka tersebut naik dan turun (misalkan: input
3124 menjadi angka 1234 dan 4321)
● Cari selisih antara kedua angka tersebut (dalam kasus ini 4321 - 1234 = 3087)
● Ulangi langkah tersebut (dalam kasus ini, 8730 - 378 = 8352)
● Jika anda terus ulangi langkah ini, anda akan mendapatkan angka 6174; dalam kasus ini:
(1) 4321-1234=3087; (2) 8730 - 0378 = 8352; (3) 8532-2358=6174

Dalam kasus ini, maka konstanta kaprekars dari 3124 adalah: 3.

Carilah konstanta kaprekars dari input 4 digit angka!


SQL Test
Level: Easy

Mencari Ponsel
ID Merek Model Jaringan DualSim RAM
Sebuah tabel menyimpan data-data ponsel
yang terdiri dari beberapa kolom: Merek 1 Sony Xperia 1 4G Tidak 8

(varchar), MOdel (varchar), Jaringan (varchar), 2 Samsung Galaxy S10 4G Ya 8

Dual Sim (boolean), RAM (number). 3 Samsung Galaxy Note 10 5G Ya 12

Tim anda ingin mendapatkan data-data semua 4 Apple iPhone XR 4G Tidak 4

Merek dan jumlah dari model yang diterbitkan ...

merek tersebut yang merupakan tipe Dual


SELECT Ponsel.Merek, COUNT(Ponsel.Model)
Sim. FROM Ponsel
WHERE Ponsel.DualSim = TRUE;
Apakah Kueri SQL yang ada di kanan bawah
ini benar? Jika salah, apa kueri yang benar?
Level: Medium

Mencari Pahlawan Super

Sebuah skema basis data menyimpan


data-data pahlawan super beserta Senjata
senjata-senjata mereka. =====
PahlawanSuper
ID
=====
NamaSenjata
ID
Tim anda ingin mencari di mana saja JenisSenjataID
NamaPahlawan
PahlawanSuperID
pahlawan super yang menggunakaan jenis NamaAsli
TempatTinggal
senjata “Kapak” tinggal KekuatanSuper
JenisSenjata
=====
Ingat! Dikarenakan data pahlawan super ID
JenisSenjata
sangat besar, sangat disarankan untuk tidak
menampilkan kota tempat tinggal duplikat

Apa kueri yang diperlukan?


Level: Hard

Mencari Cinta Yang Hilang


Perpisahan
Cinta beribu rasa beribu cita. =====
ID
PasanganID
Namun tidak begitu adanya bila basis data TanggalPisah
anda tidak rapi.

Dari ERD di samping, buatkan kueri untuk


Pasangan Penduduk
mencari siapa saja 100 penduduk yang =====
=====
terakhir kali berpisah untuk kita beri bingkisan ID ID
PendudukID Nama
pelipur lara. PasanganID TempatTinggal
TanggalJadian TanggalLahir
Pastikan jika ada beberapa penduduk yang
menjadi urutan ke-100, semuanya
mendapatkan bingkisan.
Performance Test
PERFORMANCE TEST Find the most efficient algorithm to get the job done!

Performance Test 1: Origami

Dr. Martin has a piece of origami paper. It’s square shaped, h*w = 20cm*20cm.

Each time he folds, he divided into a smaller rectangle, half of the area. For example:

● First fold makes the dimension is 10cm*20cm


● Second fold makes the dimension is 10cm*10cm
● Third fold makes the dimension is 5cm*10cm
● And so on…

For an input of n-fold, make the most efficient algorithm to show the dimension of
the origami paper!
PERFORMANCE TEST Find the most efficient algorithm to get the job done!

Performance Test 2: Optimus Prime

You are given an array of 999.999 numbers sequential from 2 to 1.000.000 (one
million)

Make a dictionary where you be able to to tell whether a series of number input is a
prime number with the most efficient algorithm!

Note: Input(s) might be duplicate number(s) and might be iterating up to


1.000.000.000 (one billion) times. So make sure you are building a very efficient
algorithm

Note 2: Input is n where n > 2 and n < 1.000.000


PERFORMANCE TEST Find the most efficient algorithm to get the job done!

Performance Test 3: Bit Maximus


Important Info: A bitwise operator XOR (Exclusive Or) is a operation to find a number that is created
by comparing each digits of bit within 2 operands (in this case, a 32-bit or 64-bit integer). Denoted by
hat symbol “ ^ “ in your keyboard. To understand the XOR operations, you have to understand how an
integer is formed from each bits, because the results don’t make any sense arithmetically. 2 ^ 4 is 6,
but 15 ^ 12 is 7.

You are tasked to create an algorithm to efficiently find the maximum XOR products
“w” from any integers “x” and “y” within lo ≤ x ≤ y ≤ hi with w ≤ z. ”z” is the upper limit
of “w”.

Get the input of ”lo”, ”hi”, “z” and show the result of “w”

● Sample Input: 2 5 7 >> Sample Output: 7


● Sample Input 12 19 12 >> Sample Output: 11

Anda mungkin juga menyukai