Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 기록

안드로이드 대기업 기술 면접 정리 - 2 본문

안드로이드 자료

안드로이드 대기업 기술 면접 정리 - 2

기록개발자 2020. 1. 12. 17:06

참고자료

https://blog.naver.com/PostView.nhn?blogId=csi468_&logNo=221468182854&parentCategoryNo=&categoryNo=6&viewDate=&isShowPopularPosts=true&from=search

 

2차시 면접

1. 지금까지 개발해왔던 경험들을 바탕으로, 기술적인부분에서의 간략한 자기소개 부탁드립니다.

1차시 면접과 같은 간단한 자기소개를 부탁하셨습니다.

지금까지 해왔던 Android Studio 관련 프로젝트나 동아리활동, 최근 Kotlin 을 공부중이라는 부분에 대해 설명했습니다.

2. 네트워크 관련 질문

2-1. RESTful API 에 대해 아시나요?

RESTful API 란, Rest 의 속성을 가지는(REST의 원리를 따르는) 서비스 API 를 의미합니다.

REST 란, Representational State Transfer 의 약자로 웹, 웹 상의 자원들을 HTTP URI 의 형태로 표현(Represent) 하고 URI 의 형식으로 HTTP Method(GET,POST,PUT,DELETE)를 통해 해당 자원을 조작(CRUD)할 수 있는 Software Architecture 를 의미합니다. 혹은 그러한 작동원리 및 규정등을 의미합니다.

RESTful 인터페이스4가지 원칙(에 해당하는 가이드라인) 을 가지게 됩니다.

1. 자원의 식별 - 자원 각각을 메세지에 의해 식별가능해야 합니다. 주로 웹 기반의 REST 시스템에서 URI를 사용하며, 자원은 XML 이나 JSON 형태를 가집니다.

2. URI 등의 메세지를 통한 Resource의 조작. 메세지와 HTTP Method 만을 이용해 Resource를 충분히 조작할 수 있어야합니다.

여기서 Resource 조작은 CRUD Operation 을 지정해주는 작업을 의미합니다.

 

CRUD Operation : Create, Read, Update, Delete 로 자원을 조작하는 4가지 기본동작.

3. 자기서술적 메세지 - URI 메세지등에 자원과 자원을 처리해야하는 방법에 대한 정보를 충분히 포함하고 있어야 합니다. 즉, Client 는 URI 만을 보고 자원을 어떻게 다룰 수 있는지를 파악 가능해야 합니다.

4. Hyper Media

Client가 Resource에 접근할 수 있도록, 구분되는 표현을 통해 접근을 제공해 주어야 합니다. HyperText Link 등을 의미합니다.

RESTful 한 시스템에는 위의 조건에 추가하여 다음과 같은 6가지 필요조건이 존재합니다.

1. Client / Server 구조 : 자원을 요청하는 쪽이 Client가 되고, 요청받는 쪽이 Server가 됩니다.

2. Stateless : Client가 요청 및 요청한 Context 는 서버에 저장되면 안됩니다. Cookie나 context등을 신경쓸 필요없어 구현이 단순해지고, 서버의 부담을 줄일 수 있습니다. Client의 이전 요청이 다음 요청에 영향을 주면 안됩니다.(DB 를 수정하여 영향을 주는 것은 가능합니다.)

3. Cachable : Client는 응답을 Caching 할 수 있어야합니다.

4. Layered System : Client 에게는 서버에 직접 연결이 되었는지, 중간 계층의 서버를 통해 연결이 되어 있는지를 알 수 없어야합니다. Client는 Server만 호출하고, Server는 다중계층으로 구현하여 보안 및 확장성을 향상 시킬수 있습니다.

5. Code on demand : JavascriptJava applet 등을 이용하여 기능을 확장할 수 있습니다. 주로 Client가 Server에서 Script를 받아 실행시킵니다.( Optional, 꼭 존재할 필요는 없음 )

6. Interface Consistency : Interface Architecture를 작은 단위로 분리하고 단순화시켜 Client, Server의 각 파트가 독립적으로 관리,개선될 수 있도록 합니다. HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용할 수 있으며, 특정 언어나 기술등의 플랫폼에 의존하지 않습니다.

이 외에도 REST 시스템의 장단점이나 RESTful API 의 설계규칙등이 존재합니다. 더 깊은 내용을 원하시는 분들은 제가 RESTful API 를 찾아보며 참고했던 아래의 링크들을 봐주세요.

● 참고자료

https://ko.wikipedia.org/wiki/REST

 

REST - 위키백과, 우리 모두의 백과사전

REST 대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참조하십시오. REST (Representational State Transfer)는 월드 와이드 웹 과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처 의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 필딩은 HTTP 의 주요 저자 중 한 사람이다. 이 개념은 네트워킹 문화에 널리 퍼졌다. 엄격한 의미로 REST 는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자...

ko.wikipedia.org

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

https://www.a-mean-blog.com/ko/blog/%ED%86%A0%EB%A7%89%EA%B8%80/_/REST%EC%99%80-RESTful-API

 

토막글: REST와 RESTful API - A MEAN Blog

REST와 RESTful API 작성자: Ian H Date: 2017/08/03 REST REST란 Re presentational S tate T ransfer 의 약자 로 소프트웨어 프로그램 개발의 아키텍처의 한 형식입니다. Representational State Transfer- '대표적인 상태 전달' 이 단어만 듣고 REST가 무슨 뜻인지 알 수 있는 사람은 영어권에서도 없을 것이라고 생각이 되는데요, 저는 개인적으로 이 단어를 변형해서 ' 자원(resource)의 대표(representation)에 의한 상태 전달 ' ...

www.a-mean-blog.com

2-2. 네트워크 통신을 사용해본 적이 있는지? OkHttp3에 대해 알고있는가?

위의 RESTful API 와 연계되는 질문이였습니다. OkHttp3 와 Retrofit 등을 이용하여 네트워크 자원에 접근하고 적용해본 적이 있는지와 관련 내용을 잘 이해하고 있는지를 물어보셨습니다.

OKHttp3 는 Square 사의 Open Source 라이브러리로, HTTP 통신을 위해 사용됩니다. 이를 이용하면 GET, PUT, POST 등을 쉽게 구현할 수 있습니다. Android Studio 로 구현하는 Application은 주로 데이터를 제공받는 Client 역할을 하기 때문에, OKHttp3는 서버와의 네트워크 통신을 구현하는데 이용됩니다.

아래 포스트는 OkHttp를 이용한 구현 예시를 잘 표현해두었습니다.

http://snowdeer.github.io/android/2017/03/03/get-and-post-and-put-using-okhttp/

 

OkHttp를 활용한 GET, POST · snowdeer's Code Holic

Open Source compile 'com.squareup.okhttp3:okhttp:3.6.0' GET 예제 public boolean getUserInfo(final Context context) { try { OkHttpClient client = new OkHttpClient(); String url = SERVER_CONFIGURATION.ADDRESS + ":" + SERVER_CONFIGURATION.PORT + "/v1/userinfo"; Request request = ...

snowdeer.github.io

네트워크 통신은 Worker Thread 에서 동작하여야 하기 때문에, 이전에는 HttpUrlConnection, Async Task 등을 이용하여 구현하였었습니다. 하지만, OKHttp3 을 이용하면 Android Studio 에서 네트워크 통신을 매우 간단하게 구현할 수 있습니다.

주로 RESTful API 를 다루는 Retrofit2 와 같이 사용됩니다. Retrofit 은 같은 Square 사의 작품으로, RESTful 한 인터페이스를 가지는 CRUD 방식의 서버연결을 다루기 쉽게 제공해주는 라이브러리 입니다.

Retrofit 에 대해서는 아래 문서를 참고하세요.

http://devflow.github.io/retrofit-kr/

 

Retrofit - 한글 문서

소개 Retrofit은 HTTP API를 자바 인터페이스 형태로 사용할 수 있습니다. public interface GitHubService { @GET("/users/{user}/repos") Call<list> listRepos(@Path("user") String user); } Retrofit 클래스로 GitHubService 인터페이스를 구현하여 생성합니다. Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com") ...</list

devflow.github.io

OKHttp3 와 Retrofit을 이용한 구현자료는 아래 링크를 참고해주세요.

https://jongmin92.github.io/2018/01/29/Programming/android-retrofit2-okhttp3/

Retrofit2 + OkHttp3 사용하기 - 92Hz | Jongmin's Blog

신입사원 프로젝트로 간만에 안드로이드 개발을 하게됐습니다. 서버와 통신하기위해 Square에서 만든 Retrofit 라이브러리를 사용했는데, 기존에 사용하던 버전(1.x)과 변경된 부분이 많아 새롭게 사용법을 알아보고자 합니다. Retrofit 테스트는 API 테스트 사이트 를 통해서 Fake data를 가져오는 실습을 해보겠습니다. 해당 글의 대부분은 Retrofit 2.0 Example 을 참고했습니다. Retrofit2 Retrofit 의외에 다른 라이브러리도 있지만, Retrofit을 사용하기로 한 이유는 성능과 간단한 구현...

jongmin92.github.io

[출처] 안드로이드 앱 개발자 면접 후기 - 2차면접 (질문 & 답변 중심)|작성자 컴쏘공