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 safety, memory safety, static 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アプリケーションが用いられています。いくつか 例 をあげてみましょう。GoogleやYahoo!といった検索エンジンでは、サーバに用意されたホームページに関する膨大なデータベースから、ユーザの入力したキーワードにマッチするものをプログラムが検索して 取り出し、HTMLに加工してユーザに提示します。Amazon.comやDellといった企業は、自社の扱う商品のデータベースをサーバに置き、サーバ側のプログラムがユーザの要求に応じて商品情報を提示し、売買の契約を行い、発送処理まで行ないます。
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」、入力を受け 取ってその内容に応じてViewとModelを制御する「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
'C++' 카테고리의 다른 글
[이전] 브런치 정리 (0) | 2019.02.10 |
---|---|
러프한 요구사항 900만원 프로젝트 (0) | 2019.02.07 |
두번째 블로그의 마지막 글 모음 (0) | 2019.02.05 |
About VCS (0) | 2019.02.05 |
github에 gpg 적용 완료 (0) | 2019.02.05 |
최근댓글