면접 보면서 느낀점 :

제대로 알고 있어야 제대로 설명이 가능하다.

머리로는 아는데 말로 잘 안나오는 경우는 제대로 모르고 있는 경우인듯…

자바 질문 :

클래스란?

객체를 만들어 내기 위한 설계도 혹은 틀

객체란?

소프트웨어 세계에 구현할 대상

인스턴스란?

설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체

abstract 와 interface 의 차이 와 자바는 왜 다중상속이 안되는 것인가?

abstract 와 interface 는 자식 클래스 또는 인터페이스를 사용하는 곳에서 추상메소드를 강제로 사용하게끔 유도하는부분이 공통점이라고 할 수있다. 비슷비슷 하지만 다른점은 자바가 다중상속을 지원하지 않지만 다중인터페이스를 지원한다는 것에 있다. 다중 상속을 지원하지 않는 것은 모호성때문이다. 다중상속을 하게 되면 부모로부터 상속받은 method가 동일하게 되면 누구의 부모로부터 가져와야하는지 애매해진다. 그렇기 때문에 자바에서는 다중상속을 지원하지 않는다. 하지만 왜 인터페이스는 다중인터페이스가 가능할까? 그부분에서는 인터페이스는 어떠한 특정 동작을 보장하기 위해서 존재하기 때문이다. 이러한 부분이 차이점이라고 할 수 있다.

쓰레드풀 설명

JVM은 쓰레드 생성 개수 제한이 없어서 계속해서 쓰레드를 만들게 되면 성능 저하와 메모리 부족문제가 생길 수 있다. 이것을 막기위해 쓰레드풀이라는 쓰레드 관리 방식이 사용된다. 쓰레드를 허용된 갯수 안에서만 사용할 수 있도록 제약하는 방식이다. 어플리케이션에서 사용자로부터 들어온 요청을 작업큐에 넣고 스레드풀은 작업큐에 들어온 Task를 미리 생성해놓은 Tread 들에게 일감을 할당한다. 일을 다 처리한 Thread들은 다시 어플리케이션에 결과값을 리턴하는 방식이다. 이용하는 이유는 즉, 프로그램 성능저하 방지 그리고 다수의 사용자 요청을 처리하기 위해 사용된다.

코틀린 질문 :

let, apply,run, with 차이점

let : 이 함수를 호출한 객체를 이어지는 함수 블록의 인자로 전달한다.

getPadding().let {
        it 은 패딩 값
        setPadding(it, 0, it, 0)
    }

apply : 이 함수를 호출한 객체를 이어지는 함수 블록의 리시버로 전달한다.

params.apply {
        weight = 1f     params를 리시버로 전달 받았기 때문에 params.weight 이나 params.topMargin 바로사용
        topMargin = 100
    }

with : 인자로 받은 객체를 이어지는 함수 블록의 리시버로 전달, block 함수의 결과를 반환

with(textView) {
        text = "textView!!!"
        gravity = Gravity.CENTER_HORIZONTAL
    }

run : 인자가 없는 익명 함수처럼 사용하는 형태와 객체에서 호출하는 형태 제공 함수형 인자 block 을 호출하고 결과반환 또는 호출한 객체를 함수형 인자 block의 리시버로 전달하고 그 결과를 반환한다.

val AplusB = run {
      val a = 1
      val b = 2
      a + b
  }

textView?.run {  with 와 비슷하지만 textView 의 널체크를 해야 하는경우 사용하면 좋다
        text = "textView!!!"
        gravity = Gravity.CENTER_HORIZONTAL
    }

kotlin SAM(Single Abstract Method) 질문

선언부가 Java에 있고 ,Kotlin에서 호출 할 경우 SAM 이 동작 Kotlin 에서 AbstractMethod 에 Lambdas 식 적용하려면 Higher-Order-Functions 이용하면된다.

코틀린 사용의 장점

은근 딱 말해보라고 하면 널 안전성과 중복코드가 많이 없어진다 정도? 생각이 잘 안남ㅋㅋㅋ

  1. 간결한문법
  2. 널 안전성
  3. 가변/불변 구분
  4. 람다 표현식 지원
  5. 스트림 API 지원
  6. 완벽한 자바 호환성

안드로이드 질문 :

Context 란 ?

자신이 어떤 어플리케이션을 나타내고 있는지 알려주는 ID 역할 ActivityManagerService 에 접근 할수 있도록 하는 통로 역할

ANR(Application Not Responding) 이란?

메인 스레드가 일정 시간 어떤 TASK 에 잡혀 있으면 발생한다. 시간 소모가 많은 작업은 스레드를 통해 처리해야 함

ViewModel 의 장점

화면 회전시 데이터를 유지할 수 있는 구조로 디자인하였으며 Android Lifecycle 의 onDestroy코드가 동작한다. Lifecycle 을 내부적으로 알아서 호출해주기 때문에 좋다.

ConstraintLayout vs RelativeLayout vs LinearLayout 차이(ConstraintLayout 장점)

LinearLayout 은 orientation 이 있어서 가로 또는 세로로 차곡차곡 쌓여지는 방식이다. RelativeLayout 은 상대적인 기준으로 어떤 위젯의 왼쪽 오른쪽등등의 방향으로 배치 할 수 있게 해주는 레이아웃이다. ConstraintLayout 은 복잡한 레이아웃을 단순한 계층구조를 이용하여 표현할 수 있는 ViewGroup 이다. RelativeLayout과 비슷하지만 더 유연하고 다양하고 강력한 기능을 제공한다.

CustomView 와 Fragment 의 차이점

Fragment 는 자체 생명주기를 따르고 Activity 의 생명주기에 따라 직접적으로 영향을 받는다. Fragment를 사용하려면 Activity 내에서 또는 상위 프래그먼트내에서 사용이 가능하고 다른 액티비티에서 재사용이 가능하다. 여기서 CustomView 는 자체 생명주기는 가지고 있지 않고 Fragment 보다는 더 작은 단위?를 커스터마이징해서 재사용을 할 수 있다.

Android KTX 란 무엇인가?

안드로이드 프레임워크와 서포트 라이브러리를 모두 지원하여 안드로이드를 위한 코틀린(Kotlin) 코드를 간결하고 편하게 사용할 수 있게 설계된 확장 라이브러리이다.

mvp 패턴과 mvvm 패턴의 차이

mvp 와 mvvm 의 차이는 presenter와 viewModel 의 차이가 가장 크다. presenter 는 view의 interface 를 가지고 있고 view 관련 처리를 요청한다. 하지만 viewModel 은 view 의 참조를 하지않고 Rx를 사용하거나 LiveData를 사용해서 데이터가 변경될때 같이 자동으로 변경될수 있게 구조가 되어있다.

LiveData 는 인터럽트방식인가 폴링방식인가

폴링방식은 정해진 시간 또는 순번에 상태를 확인해서 상태 변화가 있는지 없는지 체크 하는 방식이고 인터럽트방식은 main문을 실행 하는 동중 외부에서 정해져 있는 인터럽트 핀에 신호가 들어오면 MCU는 즉각적으로 하고 있는 동작을 멈추고 인터럽트 서비스 루틴을 실행하는 것이다.

LiveData 는 데이터가 변경된 시점에 Observer 가 실행 되기 때문에 인터럽트 방식이라고 볼 수 있다.

옵저버패턴 설명

한객체의 상태가바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다.

데이터 전달 방식은 2가지가 있다 주제 객체에서 옵저버로 데이터를 보내는 방식 (푸시방식) 옵저버에서 주제객체의 데이터를 가져가는 방식(풀 방식)

Subject 와 Observer 가 존재하고 Subject에 Observer 를 등록하고 난 뒤 subject 의 데이터가 변경 되면 등록된 Observer 가 호출 되는 방식

어댑터패턴 설명

한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.

프로토콜이란?

통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메세지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜은 신호 체계, 인증 그리고 오류 감지 및 수정기능을 포함할 수 있다. 간단히 말해서 데이터 주고받는 상호간에 미리 약속된 규칙, 규약이다!!

ViewModel 상속받은 클래스에서 ViewModel 상속을 받지 않는다면 달라지는점은?

viewModel 상속을 받지 않는다면 생명주기에 따른 처리,rotate상황 등등을 추가 해주어야한다는 점이 달라진다.

Rx관련 질문 :

새로운 스레드를 생성해도 되는데 왜 Schedulers.io() 를 사용하는가? 내부 동작이 어떻게 돌아가는 것인가를 묻는 질문

화면단에서 사용되는 request 가 하나가 아니라 적게는 한자리수 많게는 두세자리수까지 갈수 있는데 이부분에서 Thread를 계속해서 생성,수거 하게 된다면 사용할 때마다 드는 비용을 무시할수 없다. 그렇기 때문에 Thread Pool 이 사용된다. 몇개의 스레드를 생성한뒤 큐에 Task를 넣고 작업하고 있지 않은 Thread에 Task를 할당하는 방식이다. 작업이 끝난 Thread 는 다시 어플리케이션에 결과값을 리턴한다. Thread를 재사용 하기때문에 성능저하를 방지할 수 있다. 하지만 Thread를 너무 많이 만들어 놓게 되면 메모리만 낭비하게 되므로 주의해서 사용해야 한다.

프로가드

코드 축소와 바이트코드를 최적화하고 미사용 코드 명령을 제거하며 남아 있는 클래스,필드 및 메서드를 짧은 이름으로 난독 처리한다. 난독 처리된 코드는 APK 의 리버스 엔지니어링을 어렵게 만들며 보안에 민감한 기능이 앱에 사용되는 경우 특히 유용하다. 64K 참조 제한을 해결하기 위한 유용한 도구 이기도 하다.

코틀린 by lazy

lateinit은 필요할 경우 언제든 초기화가 가능한 Properties 이지만 lazy properties는 생성 후 값을 변경할 수 없는 val 로 되어 있다. by lazy 정의에 의해서 초기화를 진행하고 val 이므로 값을 교체하는 건 불가능하다. lazy를 사용하는 경우 기본 synchronized 로 동작한다.

viewModel rotate 상황에서 파기 왜 안되는지 과정 ?

ViewModelStoreOwner 인터페이스를 가지고 있는 Activity 또는 Fragment 는 viewModelStore를 가지고 있다. rotate 될 때 onDestroy 가 불리게 되는데

      boolean isChangingConfigurations = activity != null && activity.isChangingConfigurations();
        if (this.mViewModelStore != null && !isChangingConfigurations) {
            this.mViewModelStore.clear();
        }

viewModelStore 가 null 이 아니고 configuration변화가 없을때 clear 를 불러 주기 때문에 rotate상황에서 viewModel이 clear 되지 않는다.

Multi dex

안드로이드 앱을 구성하는 코드는 컴파일 되어 덱스 파일로 만들어 진다. 하나의 덱스 파일에는 64K 메소드참조만 저장할 수 있다. 큰 규모 앱을 작성하다 보면 앞의 메소드 제한을 훌쩍 넘게 되는데 멀티덱스를 사용하면 덱스 파일을 여러 개로 나누어 이러한 문제를 피할 수 있다.

액티비티 생명 주기

onCreate onStart onResume Running onPause onStop onDestroy

프래그먼트 생명 주기

onAttach onCreate onCreateView onActivityCreated onStart onResume Running onPause onStop onDestroyView onDestroy onDetach

서비스 생명 주기 2가지

onCreate onStartCommand() return start_sticky , start_not_sticky, start_redeliver_intent Service Running onDestroy

onCreate onBind onUnbind onDestroy

FLAG_ACTIVITY_CLEAR_TOP 과 FLAG_ACTIVITY_SINGLE_TOP 차이

CLEARTOP 은 A -> B -> A 일 때 최상위 A 만 남고 나머지 다 destroy SINGLETOP 은 A -> B -> B 일때 A -> B 로 B가 하나로 됨.

스레드 통신방법?

스레드가 시작 되면 이 스레드는 루퍼! 핸들러! 메세지 큐! 를 하나씩 가지고 있다. 메세지큐는 외부 스레드로부터 핸들러를 통하여 받은 message 혹은 Task 를 저장하는 역할을 한다. 루퍼는 메세지큐에서 메세지를 순차적으로 꺼내서 핸들러에게 전달하는 역할!! 핸들러는 두가지 기능이 있다.

  1. 루퍼에게서 받은 메세지 혹은 Task 를 일정한 시간에 수행하는 기능을 한다.
  2. 외부 스레드로부터 받은 메세지를 핸들러를 통하여 Message Queue에 집어 넣는 역할을 한다.

스레드 충돌을 막으려면?

두개 이상의 스레드가 같이 참조 하는 메소드 혹은 블럭구문을 synchronized , synchronized block 사용해서 해결할 수 있다.

Viewholder 패턴에 대해 설명

예전 ListView 를 사용할 때 getView() 를 오버라이드 해서 뷰를 인플레이팅 시키는데 이부분에서 계속해서 생성하고 findviewById 를 불러주게 되면 부담이 많이 가는 작업이 된다. 데이터가 많아 질 수록 버벅거리는 현상이 일어날 확률이 높다. 그래서 viewHolder 패턴이 나오게 되었는데 해당 뷰가 널일때만 view를 인플레이트 시키고 viewHolder 클래스에 findviewById 를 사용해서 viewHolder 는 해당 뷰에 태깅처리해서 다음번 부터는 태그한 viewHolder 를 가져와서 사용한다. 그 이후에 viewHolder 를 강제로 구현하게 나온것이 RecyclerView 이다.

Dangerous permission

시스템 권한은 두가지로 나눠 지는데 정상권한과 위험권한이 있다. 정상권한은 사용자 개인정보를 직접 위험에 빠뜨리지않는다. 앱이 매니페스트에 정산 권한을 나열하는 경우 시스템은 자동으로 권한을 부여. 위험권한은 사용자 기밀 데이터에 대한 액세스를 앱에 부여할 수 있다. 위험권한을 나열하는 경우, 사용자는 앱에 대한 명시적 승인을 제공해야 한다.

Intent service 란?

IntentService 는 Intent를 사용해서 시작되고 하나의 workerThread 가 생성 되고 Queue에 작업이 들어 가게 된다. onHandleIntent() 메소드가 이 스레드 내에서 호출되고 작업이 다 끝나면 알아서 destroy 되는 방식이라 stopSelf를 불러줄 필요가 없다.

Foreground service 사용?

Fragment 사용 장점 ?

Activity를 분할하여 화면의 한 부분을 정의할수 있고 자신의 생명주기를 가진다. 액티비티내에서 실행 중 추가 제거가 가능하고 다른 액티비티에서도 사용 할 수 있어 재사용성이 뛰어나다. 태블릿 지원하게 될 때 용이하게 사용 가능하다.

Parcelable serializable 차이와 성능은?

복잡한 클래스의 객체를 이동시키려고 할 때 Serializable 또는 Parcelable 을 사용해서 직렬화하여 인텐트에 추가합니다. Serializable 은 Java 의 인터페이스이다. 해당 객체에 인터페이스 Serializable 을 사용해주면 되기 때문에 사용하기 쉽다. 하지만 내부에서 Reflection 을 사용하여 직렬화 처리하기 때문에 성능 저하 및 배터리 소모가 발생되게 된다. Parcelable 은 Android SDK 의 인터페이스이다. 직렬화 방법을 사용자가 명시적으로 작성하기 때문에 작동으로 처리하기 위한 reflection이 필요없다. 속도적인 측면에서는 Parcelable 이 10배 이상 빠르다.

하지만 Serializable 을 사용할 때 writeObject 와 readObject 를 구현해 주면 Parcelable 보다 쓰기는 속도가 3배 읽기의 경우 1.6배 더 빠르다. 어떻게 사용하느냐에 따라 속도적인 측면에서 비교할 수 있다.

onSaveInstanceState 와 onRestoreInstanceState

Activity 또는 Fragment 가 종료 될 때 onSaveInstanceState은 onPause 다음 상태에서 불리게 된다. 이때 파라미터로 받은 Bundle에 데이터를 저장하고 onCreate 시점에서 savedInstanceState bundle 을 통해 값을 가져와서 사용할 수 있다. onRestoreInstanceState 은 정상적인 경우는 불리지 않고 메모리 부족한 경우 프로세스 자체에서 Activity 또는 Fragment 를 강제종료할 때 onRestoreInstanceState가 불리게 된다. bundle 통해서 데이터 백업 가능.

TellMe는 정보통신망 이용촉진 및 정보보호 등에 관한 법률, 개인정보보호법,사업법 등 정보통신서비스제공자가 준수하여야 할 관련 법령상의 개인정보보호 규정을 준수하며, 관련 법령에 의거한 개인정보취급방침을 정하여 이용자 권익 보호에 최선을 다하겠습니다.

개인정보 활용처 TellMe는 아래와 같은 활용 목적을 가지고 사용자 개인정보를 수집합니다.

서비스의 기본 기능이나 특화된 기능을 제공 개별적 공지 필요시 서비스 이용과 관련하여 문의나 분쟁의 해결 유료서비스 이용 시 컨텐츠 등의 전송이나 배송∙요금 정산 맞춤형 서비스 제공 인구통계학적 특성에 따른 서비스 제공 각종 이벤트나 광고성 정보의 제공 법령 등에 규정된 의무의 이행 법령이나 이용약관에 반하여 여러분에게 피해를 줄 수 있는 잘못된 이용행위의 방지 수집하는 개인정보 앱 내 편지 기능을 사용한 편지 내용 이용자 이름(닉네임) 단말기 정보(OS, 화면사이즈, 디바이스 아이디), IP주소, 쿠키 정보 신용카드 정보, 통신사 정보, 상품권 번호 등 결제에 필요한 정보(유료 서비스 이용시) 개인정보를 수집하는 방법 TellMe는 다음과 같은 방법을 통해 개인정보를 수집합니다.

회원가입 및 서비스 이용 과정에서 이용자가 개인정보 수집에 대해 동의를 하고 직접 정보를 입력하는 경우 거래 과정에서 사용자가 채팅방에 입력하는 휴대번호, 계좌번호 제휴 서비스 또는 단체 등으로부터 개인정보를 제공받은 경우 서비스 이용 과정에서 이용자로부터 수집하는 개인정보 PC웹, 모바일 웹/앱 이용 과정에서 단말기정보(OS, 화면사이즈, 디바이스 아이디), IP주소, 쿠키, 방문일시의 정보가 자동으로 생성되어 수집될 수 있습니다.

개인정보 공유 및 제공 TellMe는 사용자가 서비스 이용과정 등에서 따로 동의하는 경우나 법령에 규정된 경우를 제외하고는 사용자 개인정보를 위에서 말씀 드린 목적 범위를 초과하여 이용하거나 제3자에게 제공 또는 공유하지 않습니다.

개인정보의 보유 및 이용기간 : 회원탈퇴시 개인정보 보유기간, 파기방법 및 이용기간 사용자 개인정보는 사용자로부터 동의를 받은 수집 및 이용목적이 달성된 때에는 회원 탈퇴시 바로 파기 합니다. 전자적 파일 형태로 저장된 개인정보는 기록을 재생할 수 없는 기술적 방법을 사용하여 삭제합니다.

개인정보 문의처 사용자가 서비스를 이용하면서 발생하는 모든 개인정보보호 관련 문의, 불만, 조언이나 기타 사항은 개인정보관리책임자 및 담당부서로 연락해 주시기 바랍니다. TellMe는 사용자 목소리에 귀 기울이고 신속하고 충분한 답변을 드릴 수 있도록 최선을 다하겠습니다.

개인정보관리책임자 이름: 김영훈(Davis) 직위: TellMe Android Developer 연락처: kimyh8496@gmail.com 고지의 의무 TellMe 법률이나 서비스의 변경사항을 반영하기 위한 목적 등으로 개인정보 취급방침을 수정할 수 있습니다. 개인정보 취급방침이 변경되는 경우 TellMe는 변경 사항을 게시하며, 변경된 개인정보 취급방침은 게시한 날로부터 7일 후부터 효력이 발생합니다.

공고일자: 2018년 11월 29일 시행일자: 2018년 12월 6일

안녕하세요?

TellMe 서비스를 이용해 주셔서 감사합니다. 지역 정보 모바일 서비스를 제공하는 TellMe가 아래 준비한 약관을 읽어주시면 감사드리겠습니다.

계정 관련 TellMe는 모바일 서비스 특성상 별다른 비밀번호 없이 소셜 계정만으로 계정을 생성하실 수 있습니다. 계정은 본인만 이용할 수 있고, 다른 사람에게 이용을 허락하거나 양도할 수 없습니다.

사용시 주의해야 할 점 TellMe는 사용자가 아래와 같이 잘못된 방법이나 행위로 서비스를 이용할 경우 사용에 대한 제재(이용정지, 강제탈퇴 등)를 가할 수 있습니다.

잘못된 방법으로 서비스의 제공을 방해하거나 TellMe가 안내하는 방법 이외의 다른 방법을 사용하여 TellMe 서비스에 접근하는 행위 다른 이용자의 정보를 무단으로 수집, 이용하거나 다른 사람들에게 제공하는 행위 서비스를 영리나 홍보 목적으로 이용하는 행위 음란 정보나 저작권 침해 정보 등 공서양속 및 법령에 위반되는 내용의 정보 등을 발송하거나 게시하는 행위 TellMe의 동의 없이 TellMe 서비스 또는 이에 포함된 소프트웨어의 일부를 복사, 수정, 배포, 판매, 양도, 대여, 담보제공하거나 타인에게 그 이용을 허락하는 행위 소프트웨어를 역설계하거나 소스 코드의 추출을 시도하는 등 TellMe 서비스를 복제, 분해 또는 모방하거나 기타 변형하는 행위 관련 법령, TellMe의 모든 약관 또는 정책을 준수하지 않는 행위 개인정보 보호 관련 개인정보는 TellMe 서비스의 원활한 제공을 위하여 사용자가 동의한 목적과 범위 내에서만 이용됩니다. 개인정보 보호 관련 기타 상세한 사항은 TellMe 개인정보 취급방침을 참고하시기 바랍니다.

게시물의 저작권 보호 TellMe 서비스 사용자가 서비스 내에 게시한 게시물의 저작권은 해당 게시물의 저작자에게 귀속됩니다. 사용자가 서비스 내에 게시하는 게시물은 검색결과 내지 서비스 및 관련 프로모션, 광고 등에 노출될 수 있으며, 해당 노출을 위해 필요한 범위 내에서는 일부 수정, 복제, 편집되어 게시될 수 있습니다. 이 경우, TellMe는 저작권법 규정을 준수하며, 사용자는 언제든지 고객센터 또는 운영자 문의 기능을 통해 해당 게시물에 대해 삭제, 검색결과 제외, 비공개 등의 조치를 요청할 수 있습니다. 위 2항 이외의 방법으로 사용자의 게시물을 이용하고자 하는 경우에는 전화, 팩스, 전자우편 등을 통해 사전에 사용자의 동의를 얻어야 합니다. 게시물의 관리 사용자의 게시물이 “정보통신망법” 및 “저작권법”등 관련법에 위반되는 내용을 포함하는 경우, 권리자는 관련법이 정한 절차에 따라 해당 게시물의 게시중단 및 삭제 등을 요청할 수 있으며, TellMe는 관련법에 따라 조치를 취하여야 합니다. TellMe는 전항에 따른 권리자의 요청이 없는 경우라도 권리침해가 인정될 만한 사유가 있거나 기타 회사 정책 및 관련법에 위반되는 경우에는 관련법에 따라 해당 게시물에 대해 임시조치(삭제, 노출제한, 게시중단) 등을 취할 수 있습니다. 사용권리 TellMe 서비스 이용을 위하여 양도불가능하고 무상의 라이선스를 사용자분들에게 제공합니다. 다만,TellMe 상표 및 로고를 사용할 권리를 사용자분들에게 부여하는 것은 아닙니다.

서비스 고지 및 홍보내용 표시 TellMe는 서비스 사용자분의 편의를 위해 서비스 이용과 관련된 각종 고지 및 기타 TellMe 서비스 홍보를 포함한 다양한 정보를 TellMe 서비스에 표시할 수 있습니다.

TellMe는 8세 이하의 아동 등(금치산자, 중증 정신장애인 포함)의 보호의무자가 개인위치정보의 이용 또는 제공에 서면으로 동의하는 경우에는 해당 본인의 동의가 있는 것으로 보며, 이 경우 보호의무자는 개인위치정보주체의 권리를 모두 행사할 수 있습니다.

서비스 중단 TellMe 서비스는 장비의 유지∙보수를 위한 정기 또는 임시 점검 또는 다른 상당한 이유로 TellMe 서비스의 제공이 일시 중단될 수 있으며, 이때에는 미리 서비스 제공화면에 공지하겠습니다. 만약, TellMe로서도 예측할 수 없는 이유로 TellMe 서비스가 중단된 때에는 TellMe이 상황을 파악하는 즉시 통지하겠습니다.

이용계약 해지(서비스 탈퇴) 사용자가 TellMe 서비스의 이용을 더 이상 원치 않는 때에는 언제든지 TellMe 서비스 내 제공되는 메뉴를 이용하여 TellMe 서비스 이용계약의 해지 신청을 할 수 있으며, TellMe은 법령이 정하는 바에 따라 신속히 처리하겠습니다. 이용계약이 해지되면 법령 및 개인정보 취급방침에 따라 사용자 정보는 삭제됩니다. 다만, 사용자가 작성한 게시물이 제3자에 의하여 스크랩 또는 다른 공유 기능으로 게시되거나, 사용자가 제3자의 게시물에 댓글, 채팅 등 게시물을 추가하는 등의 경우에는 다른 이용자의 정상적 서비스 이용을 위하여 필요한 범위 내에서 TellMe 서비스 내에 삭제되지 않고 남아 있게 됩니다.

책임제한 TellMe은 법령상 허용되는 한도 내에서 TellMe 서비스와 관련하여 본 약관에 명시되지 않은 어떠한 구체적인 사항에 대한 약정이나 보증을 하지 않습니다. 예를 들어, TellMe은 TellMe 서비스에 속한 콘텐츠, 서비스의 특정 기능, 서비스의 이용가능성에 대하여 어떠한 약정이나 보증을 하는 것이 아니며, TellMe 서비스를 있는 그대로 제공할 뿐입니다.

손해배상 TellMe의 과실로 인하여 사용자가 손해를 입게 될 경우 TellMe은 법령에 따라 사용자의 손해를 배상하겠습니다. 다만, TellMe은 TellMe 서비스에 접속 또는 이용과정에서 발생하는 개인적인 손해, 제3자가 불법적으로 TellMe의 서버에 접속하거나 서버를 이용함으로써 발생하는 손해, 제3자가 TellMe 서버에 대한 전송 또는 TellMe 서버로부터의 전송을 방해함으로써 발생하는 손해, 제3자가 악성 프로그램을 전송 또는 유포함으로써 발생하는 손해, 전송된 데이터의 생략, 누락, 파괴 등으로 발생한 손해, 명예훼손 등 제3자가 TellMe 서비스를 이용하는 과정에서 사용자에게 발생시킨 손해에 대하여 책임을 부담하지 않습니다. 또한 TellMe은 법률상 허용되는 한도 내에서 간접 손해, 특별 손해, 결과적 손해, 징계적 손해, 및 징벌적 손해에 대한 책임을 부담하지 않습니다.

약관수정 TellMe은 법률이나 TellMe 서비스의 변경사항을 반영하기 위한 목적 등으로 본 약관이나 각 TellMe 서비스 고객센터의 TellMe 서비스 이용방법, 해당 안내 및 고지사항을 수정할 수 있습니다. 본 약관이 변경되는 경우 TellMe은 변경 사항을 개별 TellMe 서비스 초기화면에 게시하며, 변경된 약관은 게시한 날로부터 7일 후부터 효력이 발생합니다.

TellMe은 변경된 약관을 게시한 날로부터 효력이 발생되는 날까지 약관변경에 대한 사용자의 의견을 기다리겠습니다. 위 기간이 지나도록 사용자의 의견이 TellMe에 접수되지 않으면, 사용자가 변경된 약관에 따라 서비스를 이용하는 데에 동의하는 것으로 보겠습니다. 사용자가 변경된 약관에 동의하지 않는 경우 변경된 약관의 적용을 받는 해당 서비스의 제공이 더 이상 불가능하게 됩니다.

사용자 의견 TellMe은 사용자의 의견을 소중하게 생각합니다. 사용자는 언제든지 서비스 내 TellMe 운영자 문의란을 통해 의견을 개진할 수 있습니다. TellMe은 푸시 알림, 채팅 방법, 휴대폰 번호 등으로 사용자에게 여러 가지 소식을 알려드리며, 사용자 전체에 대한 통지는 TellMe 서비스 초기화면 또는 공지사항 란에 게시함으로써 효력이 발생합니다.

본 약관은 TellMe와 사용자와의 관계에 적용되며, 제3자의 수익권을 발생시키지 않습니다.

사용자가 본 약관을 준수하지 않은 경우에, TellMe이 즉시 조치를 취하지 않더라도 TellMe이 가지고 있는 권리를 포기하는 것이 아니며, 본 약관 중 일부 조항의 집행이 불가능하게 되더라도 다른 조항에는 영향을 미치지 않습니다.

본 약관 또는 TellMe 서비스와 관련하여서는 대한민국의 법률이 적용됩니다.

공고일자: 2018년 11월 29일 시행일자: 2018년 12월 6일