2018년 4월 19일 목요일

프로그래밍 면접 질문

SAX/DOM
프로세스와 스레드
Activity/Fragment
사용해본 개발환경이 무엇인지 답하기
알고리즘의 big O
O(log n), O(n), O(n * log n), O(n2) 등등을 보기로 주고,
알고리즘들이 어떤 big O에 속하는지 고르기
인텐트의 사용 케이스와 명시적/암시적 인텐트 설명하기
브로드캐스트 리시버란?
Thread.sleep(), Object.notify(), Object.sleep()에 대해 설명하고 차이점 기술
데이터베이스의 트랜잭션 설명하기
SQLite에서 날짜와 시간 저장 방법 설명하기
클래스를 주고 싱글톤 패턴에 맞게 코드 수정하기
배열 하나 주고 이들을 조합하여 출력하는 방법을 자바 코드로 작성하기
·         TDD 써본  있는가?
·         사전테스트에서 프래그먼트(fragment) 화면을 나눌  있다고 답했는데,그것은 뷰로도 가능하지 않나?
·         ( 질문에 이어뷰로 화면 나누는 것과 프래그먼트로 나누는 것은 어떻게 다른가?
·         프로세스들 사이에 시그널은 어떻게 주고 받나?
·         스레드들 사이에 자료는 어떻게 주고 받나?
·         프로세스들이스레드들이 메모리로 자료를 공유할 방법은 없나?
·         앱을 죽이면그것의 브로드캐스트 리시버는 계속 작동하는가?
·         사전테스트에서 작성한 싱글톤 패턴 문제의 답에 빠진 게 있는 것 같다무엇인지 아는가?
·         콜렉션들 중 ArrayList, LinkedList, HashMap, SparseArray에 대해 설명하고 차이점을 말하라.
·         디자인 패턴 공부했나?
·         (위 질문에 이어) Strategy 패턴에 대해 설명하라.
·         3G 망과 와이파이 망의 다른 점은?
·         LTE 망에서 상태값들에 대해 설명하라.
·         스레드 로컬이란?
자료구조멀티쓰레드. TCP/UDP차이점. Android에서 dp? ios protocol, delegate, datasource 관련암복호화 알고리즘(hex, AES256 )
















3G 망과 WiFi 망 다른 점
-       Handoff인 것 같다. 3G cell간의 handoff는 깔끔한데 반해 WiFi는 3G에 끼던 Wifi AP간이던 소켓 통신을 하는 어플이라면 무조건 끊기고 본다.
LTE 관련
-       4G는 WiBro, Wireless Broadband, LTE-Advanced, 보통 LTE는 3.9G 115Mb, 이론 1Gb
-       2G : GSM(Global System for Mobile Communication), CDMA(Code division multiple Access), TDMA(Time division multiple Access)
-       3G : W-CDMA(Wideband code division multiple access), IMT-2000(International Mobile Telecommunication-2000) 최고속도는 HSDPA(14.4Mb)
-       LTE status – no signal(RSSI : signal strenth , connected, power save mode…
  • Tables that show the coverage type, RSSI and Ec/Io (for 3G), RSSI and CINR (for 4G WiMAX), and RSRP and RSRQ (for 4G LTE).

    RSSI reflects the signal strength of the network.

    Ec/Io is a dimensionless ratio of the average power of a channel, typically the pilot channel, to the total signal power.

    RSRP stands for Reference Signal Received Power and reflects the LTE signal strength.

    CINR stands for Carrier to Interference-plus-Noise Ratio and is a measurement of signal effectiveness.

    RSRQ stands for Reference Signal Received Quality and reflects the LTE signal quality. RSRQ is the ratio between the RSRP and the Received Signal Strength Indicator (RSSI).

    The first table also shows the type(s) of 3G service you have: 1X, 1xEV-DO, or both. (To determine whether you have EV-DO Rev. 0 or Rev. A service, use the text near the 3G icon; see 
    Mobile Broadband Information and Settings.)

-       안드로이드에서 LTE 시그널 아이콘을 만들려면 어떻게 해야 할까? Connected(Active) SIGNAL Strenth, Handoff .. 고려
SAX/DOM, Simple API for XML, document object model
-       둘다 XML 파서. SAX의 경우 인터프리터 방식으로 처리하고 DOM은 메모리에서 한번에 처리함메모리에 올리니 두번 읽을 때나 전체 구조 수정 때 좋지만 메모리 많이 씀. SAX의 경우 읽기만 할 때노느가 열렸다가 닫힐 때마다 이벤트가 발생함. Apache의 axis는 XMLpullParser라고 하고 이벤트마다 핸들러를 호출하지 않는 형태.
싱글톤 패턴 -> 싱글톤에 맞게끔 수정하려면 기본 코드 숙지는 필수
       public class Singleton {
       private volatile static Singleton si;
       private void Singleton() {
       }
       public static Singleton getInstance() {
       if (si == null)
       synchronized (Singleton.class) {
       if (si == null) si = new Singleton(); }
       return si; }}

사용해 본 개발환경
-       언어는 GW-BASIC, Quick-BASIC, 씨앗, C, C++, JAVA, ASMBLY, 임베디드등의 각종 Crosscompiler, coder warrior, borland사께 좋았는데… 각 언어들의 IDE
-       최근은 Android Studio, Ecilpse (SUN을 망하게한)

알고리즘의 Big O
-       최악의 수행시간이 될 수 있는 가능성 판단
-       Big-Omega는 그 반대. Big-theta는 빅오랑 빅오메가를 동시 만족하는 애들
-       버블정렬삽입정렬의 경우 최악은 O(n^2), n^2은 최악의 상황을 말함최선은 O(n)

브로드캐스트리시버란?
-       안드로이드 앱은 4가지중 하나를 구현해야 하는데 액티비티서비스브로드캐스트리시버컨텐트 프로바이더다그중에 하나로서 시스템상에 발생하는 브로드케스트성 인텐트를 감지하는 역할을 한다문자 수신을 감지하거나 PUSH service, 첫 부팅 때 서비스를 실행하게 할 때 쓰인다.

인텐트의 사용케이스
-       위에서 말한 4가지 케이스 중에서 컨텐트프로바이더를 제외하고 인텐트는 다 쓰인다액티비티가 다른 액티비티를 호출하던지다른 앱을 실행할 수도 있다.

명시적 인텐트와 암시적 인텐트
-       액티비티 이름을 지정하고 보내면 명시적 인텐트이며명시하지 않으면 암시적 인텐트로서 각 앱들의 AndroidManifest.xml에서 인텐트 필터에 걸리는 것들. ACTION, CATEGORY, DATA, TYPE, COMPENET, EXTRAS, FLAGS 사용
-       New Intent(Intent.ACTION_DIAL, Uri.parse(“tel:......”0));
프로세스 통신
-       Shared memory, 세마포어, pipe, named pipe, file, socket, messagfe passing, memory mapped file, signal.
안드로이드 프로세스 통신 메커니즘
-       바인더 바인더 드라이버를 통해서 커널 공간 메모리를 이용한다.
-       RPC : remote procedure call, OOP에서는 remote invocation, remote method invocation.
-      <v:shapetype data-blogger-escaped-coordsize="21600,21600" data-blogger-escaped-filled="f" data-blogger-escaped-o:preferrelative="t" data-blogger-escaped-o:spt="75" data-blogger-escaped-path="m@4@5l@4@11@9@11@9@5xe" data-blogger-escaped-stroked="f" id="_x0000_t75"><v:stroke data-blogger-escaped-joinstyle="miter"><v:formulas><v:f data-blogger-escaped-eqn="if lineDrawn pixelLineWidth 0"><v:f data-blogger-escaped-eqn="sum @0 1 0"><v:f data-blogger-escaped-eqn="sum 0 0 @1"><v:f data-blogger-escaped-eqn="prod @2 1 2"><v:f data-blogger-escaped-eqn="prod @3 21600 pixelWidth"><v:f data-blogger-escaped-eqn="prod @3 21600 pixelHeight"><v:f data-blogger-escaped-eqn="sum @0 0 1"><v:f data-blogger-escaped-eqn="prod @6 1 2"><v:f data-blogger-escaped-eqn="prod @7 21600 pixelWidth"><v:f data-blogger-escaped-eqn="sum @8 21600 0"><v:f data-blogger-escaped-eqn="prod @7 21600 pixelHeight"><v:f data-blogger-escaped-eqn="sum @10 21600 0"></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:formulas><v:path data-blogger-escaped-gradientshapeok="t" data-blogger-escaped-o:connecttype="rect" data-blogger-escaped-o:extrusionok="f"><o:lock data-blogger-escaped-aspectratio="t" data-blogger-escaped-v:ext="edit"></o:lock></v:path></v:stroke></v:shapetype><v:shape data-blogger-escaped-alt="cd1f09671e309c6fe682fb50fe10307b.png" data-blogger-escaped-o:spid="_x0000_i1027" data-blogger-escaped-style="height: 303pt; mso-wrap-style: square; visibility: visible; width: 422.25pt;" data-blogger-escaped-type="#_x0000_t75" id="그림_x0020_1"><v:imagedata data-blogger-escaped-o:title="cd1f09671e309c6fe682fb50fe10307b" data-blogger-escaped-src="file:///C:\Users\joe\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"></v:imagedata></v:shape>
쓰레드 통신
-       어떤 쓰레드를 말하는 것인지? For문 돌려서 만들어 내는 쓰레드들인지하나의 앱에서 도는 여러 쓰레들인지각자 다른 앱들에서 파생된 Thread 들인지그 Thread가 어떤 일을 하느냐에 따라 달라질 듯
-       안드로이드라면 File, DB로 교환을 해도 되고 브로드 캐스팅을 이용해도 되고 static 변수를 이용해도 되고 방법은 많이 있을 듯하나의 함수(static volatile변수가 있는)를 같이 씀.
안드로이드에서 프로세스와 쓰레드
-       Application component(액티비티서비스, BR, CP)가 시작될 때 리눅스 프로세스가 생성되면서 싱글쓰레드가 돈다그 싱글 쓰레드를 메인 쓰레드 혹은 UI 쓰레드라고 부른다.
-       프로세스 상태는 전/후면보이는서비스빈 프로세스로 되어 있다.
-       핸들러, Asynctask,, RunOnUiThread로 관리를 해줘야함.
액티비티와 Fragment
-       액티비티는 안드로이드 4대 컴포넌트고 Fragment는 허니콤(타블렛을 위한 안드로이드)에 화면 분할을 위해 나온 개념꼭 Fragment로 구현안하고 Relative Layout으로 적당히 구현해도 됨아이스크림으로 넘어오면서 폰에도 통합되었는데 Scroll이나 viewPager만큼 쓰이진 않는 듯.
정렬 알고리즘의 Big O
-       nLogn = 힙정렬퀵정렬병합정렬
-       n^2 = 선택버블삽입
-       속도 : n^2 > nLogn > n > logn
-       Nlogn => n=1일 때 0, 2 = 2, 3 = 4.75, 4 = 8, 5 = 11
트랜젝션
-       현대의 웹 보안에 있어서 매우 중요한 역할을 차지하며 DB와 JAVA 언어가 데이터를 주고 받는 과정에 원자성을 부여하는 수단
-       한줄의 쿼리로 도저히 끝낼 수 없는 상황이 왔을 때쇼핑을 하는데 회원이 잔여금액을 확인하고 선택상품을 구매했을 때 잔여 금액이 감소하는
-       상품구매에서 Exception 발생해서 상품이 없는데 있다고 되거나 잔여금액이 감소하기 직전 서버 전원이 나갈 때.
-       쿼리 여러 개를 하나의 트랜젝션으로 묶어서 에러 발생시에 원래대로 돌려놓는 기술
-       All or nothing. Commit and rollback
-       트랜젝션 전에는 프로시져가 있었다.
-      <v:shape data-blogger-escaped-alt="http://pds23.egloos.com/pds/201201/13/59/d0142459_4f0fddd013079.png" data-blogger-escaped-o:spid="_x0000_i1026" data-blogger-escaped-style="height: 393.75pt; mso-wrap-style: square; visibility: visible; width: 468pt;" data-blogger-escaped-type="#_x0000_t75" id="그림_x0020_2"><v:imagedata data-blogger-escaped-o:title="d0142459_4f0fddd013079" data-blogger-escaped-src="file:///C:\Users\joe\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png"></v:imagedata></v:shape>
-       얘가 프로시져… 걍 요래 생겨먹었다.
앱이 죽어도 브로드 캐스트 리시버는 살아 있는가?
-       BOOT COMPLETE 는 앱이 죽어 있어도 받는걸보면 AndroidManifest.xml이 있는 한분명 살아 있다.
SQL JOIN
-       INNER JOIN : 두 테이블간의 조인 조건을 만족하는 ROW만 리턴
-       OUTER JOIN : LEFT, RIGHT, FULL이 있고 LEFT의 경우 왼쪽 다 들고와서 오른쪽이랑 매칭 없으면 NULL 리턴
-       Select a.id, a.name from tb1 a inner join tb2 where a.id = b.id
-       Insert into tbl2 (id,car) values (2, ‘MIN’)

샤딩 몽고DB는 데이터 베이스 자체에서 샤딩기능을 제공수평분할 서현동 주민 테이블정자동 주민 테이블샤딩 서현동은 A DB정자동은 B DB에 물리적으로 나누는 것.
Lock : Lock I= new ReentrantLock();
l.lock();
try {
}
Finally {
l.unlock();
}
크리티컬 섹션은 한번에 하나의 쓰레드만 실행시킴. Lock을 얻지 못하면 시스템 호출

스레드 로컬이란?
하나의 인스턴스에서 생성되는 쓰레드들이 각각 정보를 저장하려고 할 때 이용.
뷰로 화면 나누는 것과 프래그먼트로 나누는 것은 어떻게 다른가?
(위 질문에 이어) Strategy 패턴에 대해 설명하라.
자료구조
스레드들 사이에 자료는 어떻게 주고 받나?
프로세스들이스레드들이 메모리로 자료를 공유할 방법은 없나?
콜렉션들 중 ArrayList, LinkedList, HashMap, SparseArray에 대해 설명하고 차이점을 말하라.
HashMap 빼고는 키 없이 저장하는 방식. ArrayList는 일반적으로 쉽게 쓰는 방식, LinkedList는 ArrayList에서 중간 데이터 삽입삭제가 일어나면 이걸로 바꾸어야 함. HashMap은 키값과 같이 저장하고 동기화에는 취약그럴 땐 HashTable 쓰고. SparseArray는 성능 짱 안드로이드용 ArrayList로 알고 있음.
ArrayList : 데이터를 중간에 끼워넣지 않을 때 싸용


O(log n), O(n), O(n * log n), O(n2) 등등을 보기로 주고,
알고리즘들이 어떤 big O에 속하는지 고르기
Thread.sleep(), Object.notify(), Object.sleep()에 대해 설명하고 차이점 기술
SQLite에서 날짜와 시간 저장 방법 설명하기
TimeZone tm = TimeZone.getTiemZone(“Etc/GMT-9”);
TiemZone.setDefault(tmzone);
System.currentTiemMills()
New Java.util.Date()getTime()
Cusor.getLong(xxx)
New SimpleDataFormat(“yyyy-mm-dd HH:mm:ss”).format(datetime);

Db.execuSQL(“update TABLE_NAME set COLUMN_NAME = datetime(‘now’) where …”);


   값을 가져오기 위한 일반적인 방법은
   Cursor row = databaseHelper.query(true, TABLE_NAME, new String[] {COLUMN_INDEX}, ID_COLUMN_INDEX + "=" + towid, null, null, null, null, null);
 
   String dateTime = row.getString(row.getColumnIndexOrTHrow(COLUMN_INDEX));

   // string
으로 가져오기 위해서는 이 값을 로컬 형식으로 변화 하여야 합니다.
  DateFormat iso8601Format = new SimpleSDateFormat("YYYY-MM-DD HH:MM:SS");
  try {
     date = iso8601Format.parse(dateTime);
  } catch(ParseException e) {
     Log.e(TAG, "Parsing ISO8601 datetiem failed", e);
  }

  long when = date.getTime();
  int flags = 0;

  flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME;
  flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE;
  flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
  flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR;

  String finalDateTime = android.text.format.DateUtils.formatDateTime(context,when    
                                                    +TimeZone.getDefault().getOffset(when), flags);
배열 하나 주고 이들을 조합하여 출력하는 방법을 자바 코드로 작성하기
System.arraycopy(src, pos, dec, pos, length)

<v:imagedata data-blogger-escaped-o:title="175466144CC11C27552BBC" data-blogger-escaped-src="file:///C:\Users\joe\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"></v:imagedata>

SparseArray<bitmap> _bitmapCache = new SparseArray<bitmap>();
</bitmap></bitmap>
   private void fillBitmapCache() {
        _bitmapCache.put(R.drawable.icon, BitmapFactory.decodeResource(getResources(), R.drawable.icon));
        _bitmapCache.put(R.drawable.abstrakt, BitmapFactory.decodeResource(getResources(), R.drawable.abstrakt));
        _bitmapCache.put(R.drawable.wallpaper, BitmapFactory.decodeResource(getResources(), R.drawable.wallpaper));
        _bitmapCache.put(R.drawable.scissors, BitmapFactory.decodeResource(getResources(),
    }

Bitmap bm = _bitmapCache.get(R.drawable.icon);

int key = 0;
for(int i = 0; i < sparseArray.size(); i++) {
   key = sparseArray.keyAt(i);
   // get the object by the key.
   Object obj = sparseArray.get(key);
}

ORM(Object Relational Mapping)의 정의
데이터베이스 연계처리를 위하여 기존의 SQL에 의존하는 것이 아니라직접 테이블의 컬럼을 자바
Class에 매핑하거나 XML형태의 SQL을 실행하여 처리를 수행하는 Persistence Layer를 담당하는
Framework 개발모델

Definitions of "strong" or "weak"[edit]<p></p>

A number of different language design decisions have been referred to as evidence of "strong" or "weak" typing. In fact, many of these are more accurately understood as the presence or absence of type safetymemory safetystatic type-checking, or dynamic type-checking.

느긋한 계산법 yield return;
커링 – 함수(function)의 인자를 줄이는 것
Concurrent
continuations



Interface call back

Class Sum {
Interface OnMaxNumberDb {
Void onMaxNumber(int number, int exceed);
}

Private onMaxNumberCb myCallback;

Public void setOnMaxNumberCb(OnMaxNumberCb callback) {
MyCallack = callback;
}

Public int addNumber(int adder) {
Number = number + adder;
If(myCallback != null) {
Ifif(number >= maxNumber) {
myCallback.onMaxNumber(number, number-maxNumber);
return number;
}

Sum total = new Sum();
Sum.onMaxNumberCb call back = new Sum.OnMaxNumberCb() {
Public void onMaxNumber(int number, int exceed) {
Syso
}
}
Total.setOnMaxNumberCb(callback);
Hibernate는 객체 모델링(Object Oriented Modeling)과 관계형 데이터 모델링(Relational Data Modeling) 사이의 불일치를 해결해 주는 ORM(Object Relation Mapping) 도구입니다.


다형성

                
 객체지향개념에서의 다형성이란 '여러 가지 형태를 가질  있는 능력' 의미하며자바에서는  타입의 참조변수로 여러 타입의    참조할  있도록 함으로써 다형성을 프로그램적으로 구현하였다
작성중
 
 
OverLoading & OverLiding

              
 오버로딩은 기존에 메소드의 인자를 이용하여서 하나의 함수에 여라가지 기능을 만드는  입니다.
 오버라이딩이란 상위 클래스에 있는 메서드와 똑같은 메서드를 하위 클래스에서 다시 만드는 행위를 말합니다 하위 클래스에서 메서드를 재정의하는 것을 말합니다.주로 생성자메소드를 정의할  많이 사용합니다.
 
 
Stack , Q

                컴퓨터의 알고리즘에서 가장 흔하게 사용되는 자료 구조가 스택과 큐이다
.... 작성중
 
 
JAVA 특징

              
 Java언어의 특징은 플랫폼에 독립적인 객체지향언어라는 것이 가장 두드러지는 특징입니다.
플랫폼에 독립적이라는 것은 리눅스,윈도우 등과 같은 개발환경에 제약을 받지 않고 어느 플랫폼에서나 코드의 호환성과 재사용이 자유롭다는 것을 의미합니다.
JSP, 모바일서버네트워크프로그램소켓프로그램,  . . . . . . 
 
 
 
가비지콜렉션 garbage collection ベジコレクション
              
 가비지 컬렉션Garbage Collection이란시스템에서  이상 사용하지 않는 동적 할당된 메모리 블럭 혹은 개체를 찾아 자동적으로 다시 사용 가능한 자원으로 회수하는 것을 말한다시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터Garbage Collector라고 하며가비지 컬렉션은 약자로 GC라고 부르기도 한다.
일반적인 가비지 컬렉터 알고리듬Algorithm 다음과 같이 동작한다.

1.  이상 프로그램에서 사용하지 않을 개체Object 찾아낸다.
2. 해당 개체가 사용하는 리소스를 회수한다.
기술이론폴더 참조
일본IT용어사전중
ベジコレクションとは、OSのメモリ管理機能の一つ。プログラムが使用しなくなったメモリ領域や、プログラム間の隙間のメモリ領域を集めて、連続 した利用可能なメモリ領域を増やす技術。これが不完全なOSは次第に利用可能なメモリが減ってゆくため、一定期間ごとに再起動 を強いられることになる。Java言語の実行環境(JVM)は自身がガベジコレクション機能を持っており、Javaプログラマがメモリ管理に気を使わなくてもいいようにしている。
 
[DB]Statement PreparedStatement 차이
                 정적 SQL 문을 실행해작성된 결과를 돌려주기 위해서(때문에사용되는 객체입니다.
디폴트에서는,Statement객체 마다 1 개의ResultSet객체만이 동시에 오픈할  있습니다따라서, 1 개의ResultSet객체의 read다른 read 의해 끼어들어지면(), 각각은 다른Statement객체에 의해 생성된 것이 됩니다.Statement인터페이스의 모든 execution 메소드는문장의 현재의ResultSet객체로 오픈되고 있는 것이 존재하면그것을 암묵에 클로즈 합니다.
관련 항목 : Connection.createStatement(),ResultSet
 
 Class diagram
              
클래스 다이어그램은 "클래스"라고 하는 객체지향 설계단위를 이용하여 시스템의 정적인 구조(모델) 표현한 것이다클래스 다이어그램은 분석설계구현  다양한 상황에서  사용목적에 맞게 입도를 조절하여 기술   있다.
예제 : 스트럿츠의 클래스다이어그램
クラス図 ( Class Diagram ) yahoo.co.jp검색 출처
システムの構造及びオブジェクトの枠組みを静的に表現するための表記法。 処理をどのようにクラス分けするか、抽象クラスインタフェイスなどが明確になるため、 詳細設計の初期で使用されることが多い。
 
 Sequence diagram
              
작성중
 
 
웹어플리케이션이 동작하는 방식을 설명해라.
                

WebApplication 대해서... 도쿄대 학술지인것같은데.. 야후재팬검색중 찾은것임
 Webアプリケションとは、Webバ上で動作するアプリケションのことを指します。ユザがサバ上のアプリケションからデタを 取り出す、あるいはアプリケションに対してデタを送信するために、Webのフレムワクが利用 されます。すべてのデタ、デタの処理プログラムはサバ上に置かれるため、基本的にはユザが特別なプログラムのインストルを行うことなく、WebブラウザさえあればWebアプリケションは 利用できます。

 現在、インタネットの上で行われている多様なサビスや商品の販売では、Webアプリケションが用いられています。いくつか  をあげてみましょう。GoogleYahoo!といった検索エンジンでは、サバに用意されたホムペジに関する膨大なデタベスから、ユザの入力したキドにマッチするものをプログラムが検索して 取り出し、HTMLに加工してユザに提示します。Amazon.comDellといった企業は、自社の扱う商品のデタベスをサバに置き、サバ側のプログラムがユザの要求に応じて商品情報を提示し、売買の契約を行い、発送処理まで行ないます。
Webアプリケションを利用したサビスは、1990年代後半 に一般の人の生活に広く普及しました。こうした背景には、時間や場所の制約を受けずに自由にサビスの利用 やショッピングをできること、膨大な商品を揃えられること、個の要求に合わせたきめ細かなカスタマイズが可能であること、キドなどで商品の検索が容易に行えること、といった従来の店舗には
Webアプリケションない魅力があげられます。
また、こうしたWebアプリケションのメリットに目をつけたのは、一般の消費者を対象とした企業だけではありません。製造業などでの部品や資材の調達では、必要な仕様を満たす商品を 世界中のサプライヤから低い値段で購入する必要があります。こうしたB2B(Business to Business)の市場でも、Webアプリケションの提供する高率的 な情報共有機能が使われています。近年では、変化の激しい消費者の需要に合わせて、なるべく在庫を持たず必要な分だけ生産し無駄 をなくすことが必要と考えられています。販売店での消費者の購買トレンドの収集から、卸業者、メ、部品メが一体となって情報を交換する情報システムを 利用したSCM(Supply Chain Management)が注目されています。Webアプリケションはこういった場面においても重要な役割を果たしています。近年では、こうしたB2Bにおける企業間のデタ処理のさらなる自動化の枠組みとして、Webビスが注目されています。Webアプリケションのユザが人間であるのに対して、Webビスは計算機プログラムがユザとなります。
 
 
EJB?
                
 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB) 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다, EJB 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE 자바 API  하나로주로  시스템에서 JSP 화면 로직을 처리하고, EJB 업무 로직을 처리하는 역할을 한다.
http://ko.wikipedia.org/wiki/엔터프라이즈_자바빈즈
 
 
MVC 패턴이란?
                
 객체지향 설계를 처음 접하기 이전부터 MVC 모델에 대한 개념적인 지식은 한번쯤 접해 보았을 것입니다가장 기본적인 정의를 설명하자면 M( Mode ) Application Business Logic , 객체 또는 데이터의 가공을 책임지는 컴포넌트들의 집합체이고 C ( Control )이란 객체 또는 데이터의 흐름을 책임지는 컴포넌트 , V( View ) 객체 또는 데이터의 생성을 책임지는 컴포넌트로써 일반적으로 Data 입력 부분과 출력 부분을 담당합니다  참고자료링크
 

MVCとは、ソフトウェアの設計モデルの一つで、処理の中核を担う「Model」、表示出力を司る「View」、入力を受け 取ってその内容に応じてViewModelを制御する「Controller」の3要素の組み合わせでシステムを実装する方式。
メインの処理はModelに実装し、Modelは画面出力などは行なわない。処理結果はViewに渡され、画面表示などが行なわれる。ユザからの入力はControllerが受け 取り、何らかの処理が必要な場合はModelに依頼し、出力が必要な場合はViewに依頼する。
このように、明確に機能ごとに分離することで、開発作業の分業が容易になり、また、互いに仕様変更の影響を受けにくくて済むようになる。
もともと、Smalltalkでのグラフィカルインタフェス設計に用いられた概念で、最近ではJ2EEなど、エンタプライズシステムの開発などに応用される方法論である。
 
 
어떤 웹어플리케이션 서버를 사용했나?
              

 
 
OOP에서 interface abstract class 차이점은?
                
16. 인터페이스와 추상 클래스
[출처기술면접자료1 - JAVA기본기술이론부분|작성자 쪼꼬







c c++ 차이점
 클래스  => opp언어
 절차지향, OPP(object oriented programming : 객체 지향 언어)
 -> 클래스자료형을 이용해 만드는 program

 -다형성
 객체지향개념에서의 다형성이란 '여러 가지 형태를 가질  있는 능력' 의미하며자바에서는  타입의 참조변수로 여러 타입의     참조할  있도록 함으로써 다형성을 프로그램적으로 구현하였다

-오버로딩 오버 라이딩
오버로딩은 기존에 메소드의 인자를 이용하여서 하나의 함수에 여라가지 기능을 만드는것 입니다
오버라이딩이란 상위 클래스에 있는 메서드와 똑같은 메서드를 하위 클래스에서 다시 만드는 행위를 말합니다 하위 클래스에서 메서드를 재정의하는 것을 말합니다.주로 생성자메소드를 정의할때 많이 사용합니다.

 - 정적 변수지역변수전역변수를 스택과 힙과 관련에서 설명해보세요.
전역변수는 프로그램에서 전반적으로  사용이 가능 함수 밖에서 정의해 놓으면 다른 함수에서도 사용할  있습니다.
지역변수는 함수 안에서만 사용이 가능한 변수입니다다른 함수에서는 사용을 못하죠.
정적변수는 한번 정의 하면  값은 계속적으로 메모리에 남아 있는 것입니다.
프로그램이 종료할때 메모리에서 지워집니다.함수안에서 사용해도 함수가 끝날때 지워지지 않습니다

- OSI 7 Layers 대한 질문 
7계층응용 (application layer)
6계층표현 (presentation layer)
5계층세션 계층(session layer)
4계층전송 계층(transport layer)
3계층네트워크 계층(network layer)
2계층데이터링크 계층(data link layer)
1계층물리 계층(physical layer)

 - 회사나   궁금한 

 - 스터디 ONE 이라고 하셨는데 세미나를 해보신적이 있습니까?

 - 후배들에게 도움을 주고 계십니까?

 - WIPI 이용한 게임을 제작을 하셨는데 어떤 종류의 게임이며 코드 길이는 얼마정도 입니까?

 - 프로그램을 개발하는데 제일 중요한 것이 무엇이라고 생각합니까?
   보기 : 기획 설계 코딩

 - 학교에서 프로그래밍을 하는데 컴파일러를 어떤 것을 쓰십니까?

- java 특징에 대해 말하세요.
Java언어의 특징은 플랫폼에 독립적인 객체지향언어라는것이 가장 두드러지는 특징입니다.
플랫폼에 독립적이라는 것은 리눅스,윈도우 등과 같은 개발환경에 제약을 받지 않고 어느 플랫폼에서나 코드의 호환성과 재사용이 자유롭다는 것을 의미합니다.
JSP, 모바일서버네트워크프로그램소켓프로그램,

- stack  Q 설명하세요.
컴퓨터의 알고리즘에서 가장 흔하게 사용되는 자료 구조가 스택과 큐이다
스택은 모든 작업이 리스트의 한쪽 끝에서만 수행되는 선형 리스트의  형태로리스트의 한쪽 (TOP)에서 원소를 삽입하거나 제거하는데 사용된다그러므로 리스트에서 스택에 마지막으로 입력된 원소가 제일 먼저 제거의 대상이 된다그래서 스택을 LIFO (Last In First Out) 라고도 한다
큐에서 삽입은 REAR에서 이루어지고제거는 FRONT에서 이루어진다그러므로 큐에 A,B,C,D,E순으로 원소가 삽입되었다면제일 먼저 제거되는 원소는 A이다.

- DB 경우 ERD 그려봤는지프로그램은 무엇을 사용하는지어느 정도 수준인지?
Entity Relationship Diagram 약자로 개체관계도



다음 용어들은 자바 기반 업종의 면접시 물어보거나 물어볼만한 질문들입니다.
1.     ERP(Enterprise Resource Planning)
전사적 자원 관리 시스템
-기업의 모든 자원을 전체적으로 관리하여 최적화된 기업활동을 통합,관리 시스템에 근거하여 스피트경영과 투명경영의 효과를 꾀하는 
2.     Framework 프레임워크(제가 생각하는 모범 답안은 Framework Library 비교하여 설명하는 것입니다.)
특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스들과 인터페이스의 집합
장점 - 재사용성단순성역할구분확장성유지보수용이
프레임웍과 라이브러리 차이
  라이브러리는 어플리케이션에서 호출할  있는 함수와 루틴으로 구성되어 있고
  프레임워크는 어플리케이션에서 특정 기능들을 제공하기 위해 확장할  있는 일반적이고 상호 협력적인 컴포넌  트를 제공
3.     Struts 스트러츠(Struts외에도 Spring, 하이버네이트  다양한 프레임워크가 존재하나 예로  3가지 정도의 프레임워크에 대한 특징과 MVC 모델에서 커버하는 부분을 키워드로 잡아서 설명하면   같습니다.
컨트롤러에 강점이 있는 프레임워크의  종류
단일 진입 서블릿을 사용하여 관리가 용이(커멘드패턴을 생각하면 )
4.     Model 1 Model 2 차이점
MVC 
모델을 기준으로 설명
5.     EJB
최근에는 엔티티빈 대신 POJO 활용하는 측면이 강한데 이러한 경향은 객체지향적인 프로그램 기법을 적용하기 위한 방편이라는 것을 염두에 두고 세션 엔티티   메세지 드리븐   특징을 설명
분산 객체기술에 기반을  컴포넌트 기술
처리속도가 느림
재사용성이 뛰어남
개발 속도가 빠름
구성
   홈인터페이스(빈의 생성과 소멸관련 작업
   리모트 인터페이스(비지니스 메소드 선언)
    클래스 - SessionBean(무상태 : 검색,계산  상태유지장바구니,회원관리)
                 - EntityBean: 데이터 처리
o               - MessageDrivenBean : 비동기 메시지 통보
6.     WAS (Web Application Server)역할과 대표적인 제품들을 나열하고 특징 설명
7.     SAP솔루션 제품명이면서 기업명. ERP, CRM관련 전문 업체요점 정리.
8.     String, StringBuffer, StringBuilder 차이점
String클래스는 문자열을 추가할  내부적으로 StringBuffer클래스로 변환되어 처리됨.
문자열의 변화가 많은 경우는 StringBuffer클래스가 빠름.
      StringBuffer를 사용하면 입출력 데이터를 읽는 양이 많고 처리시 속도가 빠름.
      StringBuilder StringBuffer 비슷하지만 수정 가능한 문자열을 작성할 때 수 있음.
9. Java Servlet
 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램
10.오라클 인덱스
인덱스데이터와 검색의 성능을 향상시키기 위해 만들어짐
           )부산의 위치가 어디있는지 모를경우(인덱스가 없을경우다 찾아봐야 되지만 인덱스가 있을 경우
              부산시의 위치를 정확히 알게 되고 결국은 데이터 접근이 빠르다.
 11. 트랜젝션,롤백,커밋
 - 트랜젝션이란일련의 작업단위
    ACID(원자성,일관성,고립성,영구성)
    필요성 - 여러작업이 한 자원에 동시에 변경,참조가 필요한 경우
                작업공정이 긴 경우

   - 트랜젝션의 시작
          DML(데이터조작어)구문이 실행될 때
         사용자가 SAVEPOINT를 설정할때
   - 트랜젝션의 종료
         커밋 수행
         롤백 수행
         DDL(데이터정의어),DCL(데이터제어어)이 실행될 때 오라클 내부에서 자동 커밋 수정
         사용자가 sqlplus를 종료할때
         시스템 크래쉬 발생
커밋과 롤백 전
    롤백으로 데이터 회복가능
    현재 유저는 자신이 바꾼 데이터를 확인할 수 있다
    다른 유저에게는 바뀐 데이터 내용이 반영되지 않는다
    영향을 받은 레코든는 잠금상태
-커밋 후
    데이터는 영구적으로 변경
    복구 불가능
    모든 유저에게 변경 내용이 반영
    해당 레코드의 잠금 해제다른 유저들이 다룰 수 있다
    세이브 포인트가 삭제
-롤백 후
     데이터의 변경이 취소
     데이터의 이전 상태가 회복
     데이터에 대한 잠금이 해제
 12 조인문의 종류
    equi
    non-equi
    inner
    outer
    self

프로그래밍 면접 질문

SAX/DOM 프로세스와 스레드 Activity/Fragment 사용해본 개발환경이 무엇인지 답하기 알고리즘의  big O O(log n), O(n), O(n * log n), O(n2...