Sebelumnya, ini adalah tulisan pertama saya tentang pengalaman rekrutmen perusahaan. Niat untuk sharing rekrutmen sebenarnya sudah lama hanya saja baru diwujudkan sekarang. Mudah-mudahan berlanjut untuk kedepannya.


Jadi, rekrutmen Management Trainee IT PT. Astra Assurance yang saya ikuti diadakan di salah satu kampus swasta, Jakarta. Job descnya sendiri terbagi menjadi 3 : Business Analyst, Quality Assurance, dan developer mobile.
Karena seleksi yang dilakukan untuk pegawai IT, bentuk soalnya tidak jauh-jauh dari dasar Informatika, yaitu flowchart sebanyak 10 soal yang dibagi atas 3 pola.
Jenis 1 :
Kotak berderet yang diberi nomor dan berisi angka pada masing-masing kotak. Dibawahnya terdapat flowchart dengan instruksi penambahan, pengurangan, perkalian, dan pembagian nilai kotak-kotak tersebut. Seperti biasa, dasar informatika erat kaitannya dengan looping, condition(yes or no).
Pertanyaannya : berapa nilai kotak tersebut setelah flowchart berakhir.

Jenis 2 :
Masih seputar kotak berderet yang diberi nomor. Berbeda dengan diatas, soal jenis 2 ada satu, beberapa, dan semua kotak yang tidak memiliki nilai. Untuk mengisi nilai kotak kosong tersebut, ada instruksi awal dan instruksi flowchart.

Jenis 3 :
Flowchart dengan instruksi yang tidak saya mengerti sama sekali. hahaha

FYI : soal menggunakan bahasa inggris. Menurut saya konsentrasi sangat diperlukan untu menghindari kekeliruan membaca instruksi dan nilai pada kotak.
Jika berhasil lulus, lanjut ke tahap 2 psikotes dan jika lulus ke tahap 3 tes kesehatan.

Sekian.
INSTRUKSI
Buat program untuk menambahkan node single linked-list non-circular dengan tiap node mengandung informasi nim dan nama. Peletakan posisi node diurutkan berdasar nim secara ascending, jadi bisa tambah depan, belakang maupun tambah di tengah. Isikan data nim dan nama lengkap teman sebelah kiri dan kanan Anda. 


KODE PROGRAM
 #include "conio.h"
#include "iostream.h"
#include "stdio.h"
#include "string.h"

typedef struct TNode
{  int databaru;
char nama[25];
  TNode *next;
}TNode;

TNode*head;

void init()
{
  head=NULL;
}

int isEmpty()
{
  if (head==NULL)
    return 1;
    else
    return 0;
}

void menambah_didepan();
void menambah_dibelakang();
void menambah_ditengah();
void baca_maju();

main()
{
  int pil;

  do
  {
  cout<<"\nPILIHAN MENU\n";
  cout<<"------------------------------------\n";
  cout<<"º 1. Tambah Data Di Depan  º\n";
  cout<<"º 2. Tambah Data Di Akhir   º\n";
  cout<<"º 3. Tambah Data Di Tengah º\n";
  cout<<"º 4. Tampilkan                       º\n";
  cout<<"--------------------------------------\n";
  cout<<"Pilihan Anda = ";cin>>pil;
    switch (pil)
    {
    case 1 : menambah_didepan(); break;
    case 2 : menambah_dibelakang(); break;
    case 3 : menambah_ditengah(); break;
    case 4 : baca_maju(); break;
   }
  } while (pil!=5);
}


void judul_lap()
    {
 cout<<"\n======================================== \n";
 cout<<"\nTAMPILAN DATA !!!!! \n";
  }


void menambah_didepan()
{
 TNode *baru;
  baru=new TNode;
  cout<<"\n Masukkan Nama --> ";
  cin>>baru->nama;
  cout<<"\nMasukkan Nilai--> \n";
  cin>>baru->databaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    baru->next=head;
    head=baru;
  }
  getch();
}

void menambah_dibelakang()
{
  TNode *baru, *bantu;

    baru = new TNode;
 cout<<"\n Masukkan Nama --> ";
  cin>>baru->nama;
  cout<<"\nMasukkan Nilai--> \n";
  cin>>baru->databaru;
  baru->next=NULL;
  if(isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL)
      bantu=bantu->next;
    bantu->next=baru;
  }
}

void menambah_ditengah()
{
TNode*baru, *bantu;
  int xdatabaru;

    baru = new TNode;
 cout<<"\n Masukkan Nama --> ";
  cin>>baru->nama;
  cout<<"\nMasukkan Nilai--> \n";
  cin>>baru->databaru;
  cout<<"\nTambah Tengah Setelah angka - \n";cin>>xdatabaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL && bantu->databaru!=xdatabaru)
      bantu=bantu->next;
    baru->next=bantu->next;
    bantu->next=baru;
  }
}


void baca_maju()
{
  TNode *bantu;
  int brs=2,i;

  judul_lap();
  bantu=head;
  while (bantu!=NULL)
  {
      cout<nama;
    cout<<"  "<databaru<<"\n";
    brs++;
    bantu=bantu->next;
    }

  cout<<"\n----------------------------------------\n";
  cout<<"ENTER UNTUK MELANJUTKAN !!!";getch();
  }


TAMPILAN PROGRAM






INSTRUKSI
Buatlah sebuah fungsi untuk menghapus nim yang diinputkan oleh user.
Contoh tampilan:
NIM yang mau dihapus: 2205376
NIM dengan nama Andrew S ditemukan dan telah dihapus 

KODE PROGRAM

#include "iostream.h"
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
#include "string.h"

typedef struct TNode
{
    long nim;
    char nama[25];
  TNode *next;
}TNode;

TNode*head;
TNode*tail;

void init()
{
  head=NULL;
  tail=NULL;
}

int isEmpty()
{
  if (head==NULL)
    return 1;
    else
    return 0;
}

void insertdepan();
void insertbelakang();
void inserttengah();
void cari();
void hapus();
void tampil();

main()
{
  int pil;

  do
  {
  cout<<"\n \tPROGRAM UTAMA\n";
  cout<<" ===========================\n";
  cout<<"| 1. Tambah Data Di Depan   |\n";
  cout<<"| 2. Tambah Data Di Tengah  |\n";
  cout<<"| 3. Tambah Data Di Akhir   |\n";
  cout<<"| 4. Mencari Data           |\n";
  cout<<"| 5. Menghapus Data           |\n";
  cout<<"| 6. Tampilkan              |\n";
  cout<<"| 7. Keluar                 |\n";
  cout<<" ===========================\n\n";
  cout<<"Pilihan Anda = ";cin>>pil;
    switch (pil)
    {
    case 1 : insertdepan(); break;
    case 2 : inserttengah(); break;
    case 3 : insertbelakang(); break;
    case 4 : cari(); break;
    case 5 : hapus();break;
    case 6 : tampil(); break;
   }
  } while (pil!=7);
  return pil;
}


void insertdepan()
{
 TNode *baru;
  baru=new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    baru->next=head;
    head=baru;
  }

  getch();
}

void insertbelakang()
{
  TNode *baru, *bantu;

  baru = new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  baru->next=NULL;
  if(isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL)
      bantu=bantu->next;
    bantu->next=baru;
  }
}

void inserttengah()
{
TNode*baru, *bantu;
  long nimbaru;

   baru = new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  cout<<"\nTambah Tengah Setelah NIM - ";
  cin>>nimbaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL && bantu->nim!=nimbaru)
    bantu=bantu->next;
    baru->next=bantu->next;
    bantu->next=baru;
  }
}

void cari(){
    TNode *bantu ;   
    bantu=head;
    long caridata;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM Yang Dicari  \t: ";
  cin>>caridata;
 int ketemu=0;
  if (isEmpty()==0)
      {
        while (bantu!=NULL)
        {
          bantu->nim;
          if(caridata==bantu->nim)
          {
              cout<<"\n\n>>> Data Yang Anda Cari Ditemukan <<<";
              cout<<"\n NIM yang dicari : "<nim;
              cout<<"\n Nama Yang Bersangkutan Adalah "<nama;
              cout<<"\n\n";
              ketemu=1;
          }
          bantu=bantu->next;
        }
        if (ketemu==0)
        {
          cout<<"Data Tidak Ditemukan";
        }
      }
        else cout<<"Data Masih Kosong";
       
      getch();
}


void hapus_simpul(long caridata)
{
 struct TNode *bantu,*hapus;
 if (head==NULL) {
     cout<<"\n Data List Kosong ";
     }
     else
         {
         if ((head->nim==caridata)==1)
             {
             hapus=head;
             head=hapus->next;
              cout<<"\n\n>>> Data Telah Dihapus <<<";
              cout<<"\n NIM yang dihapus : "<nim;
              cout<<"\n NIM dengan nama "<nama <<" ditemukan dan telah dihapus";
              cout<<"\n\n";
             free(hapus);
             }
                else
                    {
                    bantu=head;
                    while ((caridata==bantu->next->nim!=1) && (bantu->next!=NULL))
                        {
                        bantu=bantu->next;
                        }
                        hapus=bantu->next;
                        if (hapus!=NULL)
                            {
                            if (hapus!=tail) { bantu->next=hapus->next;
                            }
                            else
                                {
                                tail=bantu;
                                tail->next=NULL;
                                }
              cout<<"\n\n>>> Data Telah Dihapus <<<";
              cout<<"\n NIM yang dihapus : "<nim;
              cout<<"\n NIM dengan nama "<nama <<" ditemukan dan telah dihapus";
              cout<<"\n\n";
                                free(hapus);   
                            }
                    }
         }
}


void hapus()
{
 long cari;
  cout<<"\nNIM yang akan dihapus :";
  cin>>cari;
  hapus_simpul(cari);
 
}

void tampil()
{
  TNode *bantu;
  int brs=2,i;
cout<<"\n";
  bantu=head;
  while (bantu!=NULL)
  {
    cout<<"\n----------------------------------------\n";
    cout<nim;
    cout<<"  "<nama<<"\n";
    brs++;
    bantu=bantu->next;
    }

  cout<<"\n----------------------------------------\n";
  cout<<"Tekan ENTER untuk Kembali Ke Program Utama\n\n";
  getch();
  }




TAMPILAN PROGRAM









INSTRUKSI
Buatlah program untuk mencari nama yang telah diinputkan dengan menggunakan NIM dengan Single Link List Non-Circlar.
Contoh tampilan: 
Nim yang dicari: 22053768
Nama yang bersangkutan adalah Andrew S 5.


KODE PROGRAM
#include "conio.h"
#include "iostream.h"
#include "stdio.h"


typedef struct TNode
{
    long nim;
    char nama[25];
  TNode *next;
}TNode;

TNode*head;

void init()
{
  head=NULL;
}

int isEmpty()
{
  if (head==NULL)
    return 1;
    else
    return 0;
}

void insertdepan();
void insertbelakang();
void inserttengah();
void cari();
void tampil();

main()
{
  int pil;

  do
  {
  cout<<"\n \tPROGRAM UTAMA\n";
  cout<<" ===========================\n";
  cout<<"| 1. Tambah Data Di Depan   |\n";
  cout<<"| 2. Tambah Data Di Tengah  |\n";
  cout<<"| 3. Tambah Data Di Akhir   |\n";
  cout<<"| 4. Mencari Data           |\n";
  cout<<"| 5. Tampilkan              |\n";
  cout<<"| 6. Keluar                 |\n";
  cout<<" ===========================\n\n";
  cout<<"Pilihan Anda = ";cin>>pil;
    switch (pil)
    {
    case 1 : insertdepan(); break;
    case 2 : inserttengah(); break;
    case 3 : insertbelakang(); break;
    case 4 : cari(); break;
    case 5 : tampil(); break;
   }
  } while (pil!=6);
  return pil;
}


void insertdepan()
{
 TNode *baru;
  baru=new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    baru->next=head;
    head=baru;
  }

  getch();
}

void insertbelakang()
{
  TNode *baru, *bantu;

  baru = new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  baru->next=NULL;
  if(isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL)
      bantu=bantu->next;
    bantu->next=baru;
  }
}

void inserttengah()
{
TNode*baru, *bantu;
  long nimbaru;

   baru = new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  cout<<"\nTambah Tengah Setelah NIM - \n";
  cin>>nimbaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL && bantu->nim!=nimbaru)
    bantu=bantu->next;
    baru->next=bantu->next;
    bantu->next=baru;
  }
}

void cari(){
    TNode *bantu ;   
    bantu=head;
    long caridata;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM Yang Dicari  \t: ";
  cin>>caridata;
 int ketemu=0;
  if (isEmpty()==0)
      {
        while (bantu!=NULL)
        {
          bantu->nim;
          if(caridata==bantu->nim)
          {
              cout<<"\n\n>>> Data Yang Anda Cari Ditemukan <<<";
              cout<<"\n NIM yang dicari : "<nim;
              cout<<"\n Nama Yang Bersangkutan Adalah "<nama;
              cout<<"\n\n";
              ketemu=1;
          }
          bantu=bantu->next;
        }
        if (ketemu==0)
        {
          cout<<"Data Tidak Ditemukan";
        }
      }
        else cout<<"Data Masih Kosong";
       
      getch();
}


void tampil()
{
  TNode *bantu;
  int brs=2,i;
cout<<"\n";
  bantu=head;
  while (bantu!=NULL)
  {
    cout<nim;
    cout<<"  "<nama<<"\n";
    brs++;
    bantu=bantu->next;
    }

  cout<<"\n----------------------------------------\n";
  cout<<"Tekan ENTER untuk Kembali Ke Program Utama\n\n";
  getch();
  }



TAMPILAN PROGRAM

 



Diam,
Hening
Udara bercampur debu menerpa wajah
Ada tanda
...
Begitu terasa
Fokus pun tak lagi bisa
Sibuk dengan pikiran dan rencana
Membawaku pada akhir yang kecewa
Dan itu sudah biasa
...
Menyusuri setiap ruang
Berusaha mencari tanda
Semakin lama semakin tak terasa
Dan akhirnya kembali hilang
...
Menyesali diri
Karena kebodohan
Bersikap biasa seperti semula
Lelah mengingat
Lebih lelah berusaha melupakan
...
Saat berpaling
Kembali hadir
Tanda
...
Dia datang
Secepat angin yang pergi
..
Aku memastikan
Berbalik
Namun sudah berlalu
...
Selesai
Tanpa ada kenangan
Sekilas, mereka datang
Menyapa dengan cara tersendiri
Dengan sekilas juga mereka pergi
Menghilang dengan cara yang sama

Pergilah
Sebelum aku mencegat
Cepatlah pergi
Agar ku pun cepat melupakan
Semoga kelak kita tak bertemu lagi
Atau sekalipun kita bertemu
Kita sudah saling melupakan
Matahari menyengat
Udara kian menyesakkan
Kaki terus melangkah mencapai akhir
Dan hati menyakini sebuah pertemuan
...
Semakin jauh dari awal
Semakin dekat dengan akhir
Namun belum bertemu
Semakin melangkah keyakinan semakin memudar
 Hingga akhirnya
 Pertemuan datang .
..
1 2 3
Melihat tapi tak menyadari
 4 5 6
Tersadar bahwa dia disana
7 8 9
Mencari kepastian diantara keraguan
10
Kami berlalu dan tidak menyisakan kenangan
...
Kecewa kembali menghampiri
 Tahu ataupun tidak tetap menyakitkan hati
Kita tidak pernah bertemu sekalipun di lain hari
...
Sepertinya sudah berakhir
Karena aku sudah terbangun