Git Product home page Git Product logo

ios-interview's Introduction

메인 프로필 배너

👋 HI! I'm Jisoo

💁 난 뭐가 되고 싶은걸까? 고민중 ~


🏢 Experience

Position Company Content Skills Employment Period
근무중 (주)한화시스템/ICT 금융서비스 개발 ITO Java, Spring, JSP 백엔드 및 프론트 개발중 🥲 2023.06 ~
Intern BC card FinTech 기획 개발 문서화, PT, Soft skills, Communication 2021.11-2021.12 (2개월)
Intern Summerce Platform DBA, Data Scientist 2020.07-2020.12 (6개월)
(근로/학부연구원)
Researcher
(주)현대메디 DBA, Data Scientist 2019.03-2020,06 (1년 3개월)

👩🏻‍🏫 Education

Title Major Study Contents Education Period
Apple Developer Academy @ POSTECH iOS development
App Dev, 기획, Design
2022.03-2022.12
Dongguk University (Seoul Campus) Industrial System Engineering AI, Data 2016.03-2021.08

📲 Contact :

ios-interview's People

Contributors

deslog avatar

Watchers

 avatar

ios-interview's Issues

[iOS] 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?

🤔 답변

UIViewController 입니다. UIViewcontroller의 역할은 다음과 같습니다.

  • 데이터 변화에 따라서 view 컨텐츠를 업데이트
  • view들과 함께 사용자 상호작용에 응답 및 이벤트 처리
  • view를 리사이징하고 전체적인 인터페이스의 레이아웃 관리.
  • 뷰컨트롤러들 간 화면 전환
  • 다른 뷰컨트롤러들과 함께 앱을 구성

참고, Viewcontroller의 다섯가지 역할

⁉️ View를 통해서 사용자의 입력에 즉각적으로 대응할 수 있는게 무슨뜻인가?

View에서 일어나는 사용자의 이벤트는 view controller가 받고, 그 후에 그 이벤트는 각 뷰에 따라 관련 action이나 delegate를 통해서 처리됩니다.

Viewcontroller는 Responder객체로, 직접 이벤트를 받아 처리하는 것이 가능하지만 일반적으로는 지양하고, 뷰가 그 자신의 터치 이벤트를 연관된 객체에(보통 뷰컨) action이나 delegate로 전달한다.

⁉️ Responder객체란 무엇인가요?

UIkit 에서 앱의 이벤트 처리를 담당합니다. 이벤트가 발생하면 UIkit은 이를 처리할 수 있도록 앱의 리스폰더 객체에 이벤트를 전달하는데, 전달되는 곳이 이 responder객체입니다.

[iOS] 실제 디바이스가 없을 경우 개발환경에서 할 수 있는 것과 없는 것을 설명하시오.

실제 디바이스가 없으면 xcode 내부에 있는 simulator로만 테스트 가능합니다.
simulator에서 지원하지 않는 기능은

  • 사진촬영
  • 블루투스
  • 오디오 입력
  • 전화
  • 기압계
  • 가속계
  • 주변조명센서

등이 있습니다.

따라서 예를들면, ARKit을 사용한 view를 테스트하려고 하면, 시뮬레이터는 사진촬영을 지원하지 않기 때문에 디바이스로 테스트하여야만 합니다.

[iOS] Bounds와 Frame의 차이점을 설명하세요

Bounds와 frame의 가장 대표적인 차이점은 바로 위치(origin)값에 있습니다.

frame의 origin값은 super view 좌표계에서 나타내어집니다. 그래서 원하는 뷰의 frame.origin 값을 변경하면, subview위치 기준으로 origin 만큼 떨어진 위치에 뷰가 생성됩니다.

반면에 bounds의 origin 값은 자기 본인만의 좌표계에서 나타내어집니다. 그래서 원하는 뷰의 bounds.origin값을 변경하면, 변경된 그 위치에서 다시 뷰가 그려지게 됩니다. 그래서 주로 스크롤뷰에서 많이 사용됩니다.

[iOS] 앱의 콘텐츠나 데이터 자체를 저장/보관하려는 특별한 객체를 무엇이라고 하는가?

🤔 답변

데이터 자체를 보관하려고 하는 객체는, 코어데이터와 유저디폴트가 있습니다.

코어데이터는, 애플에서 제공하는 프레임워크로 로컬 디바이스에 데이터를 저장하는 목적으로 사용합니다.
유저디폴트는 데이터를 key-value의 형태로 저장하는 방식이고, 적은 양의 데이터를 저장하기에 적합합니다. 마찬가지로 로컬 데이터를 저장하는데 사용되고, 대부분의 경우에 유저디폴트에는 별로 critical 하지 않은 데이터를 저장합니다. 그 이유는, 유저디폴트는 암호화 되어 저장되는 스토리지가 아니기 때문에 보안에 취약할 수 있기 때문입니다.

⁉️ 유저디폴트가 적은양의 데이터를 저장하기에 적합한 이유는?

적은양의 데이터를 저장하는데 적합한 이유는, 앱의 시작과함께 요청하지 않은 정보에 대해서도 모두 메모리에 로드하기 때문에 성능을 위해 '적은'데이터에 더 적합할 것 같습니다.

⁉️ 코어데이터와 userdefaults의 차이는?

Userdefaluts는 는 앱 시작과 함께 요청하지 않은 정보에 대해서도 모두 메모리에 로드됩니다.
하지만 Coredata는 필요한 정보에 대해서 fetch 해올 수 있습니다. 이러한 차이점으로 인해서 많은 데이터를 저장하는 경우에는 Coredata를 사용하는 것이 더 적합하다고 생각됩니다

⁉️ 코어데이터와 userdefaults는 각각 언제 사용하는게 적합할까?

많은 양의 데이터를 저장할때는 Core data, 비교적 적은양의 데이터를 저장하고자하면 userdefaults를 사용합니다.

Coredata는 필요한 데이터만을 fetch해와서 데이터를 사용할 수 있는 반면에, Userdefaults는 앱의 실행과 동시에 메모리에 모든 데이터가 로드되기 때문에 비교적 적은양에 적합하다고 생각합니다. 그래서 대부분, 유저 설정 데이터와 같은 것들이 userdefaults에 저장됩니다.

⁉️ Coredata는 그럼 DB인가?

코어데이터는 애플에서 제공하는 '프레임워크'일 뿐입니다.
코어데이터에 DB의 기능을 수행할 수 있도록 역할을 부여했다고 생각하면 됩니다. 코어데이터의 주된 업무는, 라이프 사이클이나 영속성 관리를 담당하는 객체 그래프 관리자 입니다.

그래서 보통 DB들과는 다르게 in-memory 방식으로 사용이 가능하는 등, 다른 특성을 가집니다.

⁉️ Coredata와 DB의 차이점은?

코어데이터는 in-memory방식으로 작동이 가능하고, 메모리에 로드된 데이터로 작업하는데, DB는 디스크에 저장된 데이터로 작업합니다.
코어데이터는 그래서 DB와 달리 삭제 및 수정을 하려면 데이터를 memory에 로드해야 작업이 가능합니다.

또 보통 DB와는 다르게 코어데이터는, 앱의 런타임 중에만 데이터를 저장합니다. 이도 in-memory 형태로 사용이 가능하기 때문입니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.