기업 조사 학습 노트 목차

공부할 것 — 무엇을 어떤 순서로

대구(ADAS·자율주차) 기준으로 정리한 것이다.

범위가 넓어 보이지만 실제로 면접에서 갈리는 지점은 정해져 있다. 신입·주니어에게 AUTOSAR 를 깊이 묻지 않는다. 대신 C 와 하드웨어 기본기를 파고들어 묻는다 — 거기서 실력이 그대로 드러나기 때문이다.

우선순위를 매기고, 이 사이트의 어느 노트가 그것을 다루는지 연결해 둔다.


우선순위

1순위  반드시 · 여기서 떨어진다
   C 언어 · 포인터 · volatile · 비트 조작
   MCU 기본 — 인터럽트 · 타이머 · GPIO
   CAN 통신

2순위  자주 물어본다
   RTOS — 태스크 · 우선순위 · 우선순위 역전
   디버깅 — HardFault · 오실로스코프
   센서 원리 (지원 제품 위주)

3순위  알면 좋다 · 차별화
   ISO 26262 · AUTOSAR · A-SPICE
   신호 처리 기초
   저전력 · EMC

1순위를 얕게 아는 것보다 깊게 아는 편이 훨씬 낫다. "volatile 이 뭐죠" 에 "최적화를 막습니다" 로 끝나면 아쉽고, "컴파일러가 값을 레지스터에 캐시해 상태 폴링이 무한 루프가 되기 때문" 까지 가면 다르다.


다이어그램 로딩 중…

위에서 아래로 갈수록 배점이 낮아진다. 1순위 셋을 확실히 하지 않은 채 표준 이름만 외우면 꼬리질문에서 바로 드러난다. 보드 실습이 중간에 끼어 있는 이유는, 그것이 디버깅 경험을 만들어 주는 유일한 경로이기 때문이다.

1순위 — 여기서 갈린다

C 언어 · 포인터

주제이 사이트
포인터·메모리 클래스·const/volatileC 언어 핵심
정수 승격 · 구조체 패딩 · 정렬 위반임베디드 C 함정
비트 조작 · 마스크 · 원자성비트 조작

자주 나오는 질문

"volatile 은 언제 쓰나"
  → ① 주변장치 레지스터 ② ISR 이 바꾸는 변수 ③ 멀티스레드 공유
  → 그리고 "원자성은 보장하지 않는다" 까지 말한다

"const volatile 이 동시에 가능한가"
  → 가능하다. 읽기 전용 상태 레지스터 — 내가 못 바꾸지만 하드웨어는 바꾼다

"구조체 크기가 왜 예상과 다른가"
  → 정렬 패딩. 큰 멤버부터 배치하면 준다
  → 통신에는 구조체를 그대로 쓰지 않고 바이트로 직렬화한다

"static 의 세 가지 의미"
  → 전역 static(파일 스코프) · 지역 static(수명) · 함수 static(내부 연결)

손으로 짜 볼 것

// 이 셋은 백지에 쓸 수 있어야 한다
void  set_bit(uint32_t *r, int n);           // 비트 세트·클리어·토글
int   ring_push(Ring *q, uint8_t v);         // 링 버퍼
uint16_t crc16(const uint8_t *d, size_t n);  // CRC

MCU 기본

주제이 사이트
MCU 구조 · 부팅 · 메모리 맵MCU란 · 메모리 맵 · 부팅
GPIO · push-pull/open-drain · 디바운싱GPIO
인터럽트 · NVIC · ISR 규칙인터럽트와 NVIC
타이머 · PWM · 입력 캡처타이머와 PWM
ADC · 샘플링 · 필터ADC

자주 나오는 질문

"인터럽트에서 하면 안 되는 것"
  → printf · malloc · 블로킹 대기
  → 왜? 재진입 안전하지 않고, 다른 인터럽트를 지연시키고, 같은 것이 또 오면 놓친다

"ISR 과 메인이 데이터를 어떻게 주고받나"
  → 링 버퍼. head 는 ISR 만, tail 은 메인만 쓰면 락이 필요 없다

"폴링과 인터럽트의 차이, 언제 무엇을"
  → 이벤트가 드물면 인터럽트, 아주 잦고 예측 가능하면 폴링이 나을 수도
  → DMA 를 쓰면 둘 다 안 해도 된다

"PWM 으로 어떻게 밝기를 조절하나"
  → 진짜 아날로그가 아니라 빠르게 껐다 켜는 것. 눈이 평균으로 받아들인다

CAN 통신

주제이 사이트
차동 신호 · 종단 · 중재 · 오류 처리CAN
필드버스 전반(LIN·RS-485·Modbus)필드버스

자주 나오는 질문

"CAN 에서 우선순위는 어떻게 정해지나"
  → ID 가 작을수록 높다. 와이어드 AND 로 0 이 1 을 이긴다
  → 진 쪽은 데이터를 잃지 않고 물러난다(비파괴 중재)
  → 그래서 최악 지연 계산이 가능해 안전 시스템에 쓴다   ★ 여기까지가 좋은 답

"종단 저항은 왜 필요하고 몇 옴인가"
  → 반사 방지. 120Ω 을 양 끝에만. 전원 끄고 재면 60Ω 이 정상

"Bus Off 가 뭔가"
  → 오류 카운터가 256 을 넘으면 스스로 버스에서 빠진다
  → 고장난 노드가 버스를 망치는 것을 막는 안전 장치

"CAN 과 이더넷을 언제 나눠 쓰나"
  → 제어·진단은 CAN(결정성), 카메라·라이다 대용량은 이더넷

2순위 — 자주 물어본다

RTOS

주제이 사이트
태스크 · 스케줄링 · 동기화 · 우선순위 역전RTOS · RTOS 면접
RTOS 없이 설계하는 법베어메탈 설계
"우선순위 역전이 뭔가"          ★ 단골 중의 단골
  → 낮은 태스크가 잡은 뮤텍스를 높은 태스크가 기다리는데,
     무관한 중간 태스크가 낮은 것을 선점해 높은 것이 계속 밀린다
  → 해법은 우선순위 상속. 화성 탐사선 Pathfinder 사례

"세마포어와 뮤텍스의 차이"
  → 세마포어는 신호 전달, 뮤텍스는 상호 배제
  → 뮤텍스는 소유자가 있고 우선순위 상속을 지원한다
  → ISR 에서 뮤텍스를 쓸 수 없는 이유가 소유자 개념 때문

"RTOS 를 언제 쓰나"
  → 선점이 필요하거나 블로킹 코드를 그대로 쓰고 싶을 때
  → 비용은 태스크마다의 스택(RAM)

디버깅

주제이 사이트
SWD/JTAG · 브레이크포인트 · 워치포인트디버거
HardFault 해독폴트 해독
트레이스 · 프로파일링트레이스
디버깅·신뢰성 면접 정리디버깅·신뢰성
"HardFault 가 나면 어떻게 원인을 찾나"     ★ 실무 경험을 보는 질문
  → 스택 프레임에서 PC 를 꺼내 addr2line 으로 위치를 찾는다
  → CFSR 비트로 종류를 가른다 (STKERR 면 스택 오버플로 의심 등)
  → HFSR.FORCED 가 1 이면 승격된 것이라 CFSR 을 봐야 한다

"스택 오버플로를 어떻게 잡나"
  → MPU 로 스택 바닥에 접근 금지 영역 → 넘치는 순간 잡힌다
  → 카나리는 이미 망가진 뒤에 안다

"브레이크포인트를 걸면 문제가 사라진다면"
  → 타이밍 의존 버그. 멈추지 말고 기록해야 한다
  → GPIO 토글 + 오실로스코프, 순환 이벤트 로그

이 질문들은 "해 봤는지" 를 본다. 책으로만 읽은 사람과 실제로 폴트를 잡아 본 사람의 답이 다르다.

센서 원리

주제이 사이트
초음파·레이더·라이다·카메라 원리와 과제기술
자율주차 시스템 전체 — 대구의 실제 도메인자율주차
SPI · I²C — 센서와 통신하는 법SPI · I²C
주변장치·타이머 면접 정리주변장치·타이머
"I2C 에서 풀업이 왜 필요한가"
  → 오픈드레인이라 HIGH 를 못 만든다. 풀업이 올려 준다
  → 그 덕분에 여러 장치가 한 선을 공유해도 단락이 안 난다(와이어드 AND)

"SPI 모드가 뭔가"
  → CPOL·CPHA 조합 4가지. 어느 엣지에서 샘플링하는지가 다르다
  → 틀리면 통신이 안 되는 게 아니라 값이 밀려 나온다

3순위 — 차별화

주제어디서
ISO 26262 · AUTOSAR · A-SPICE기술 마지막 절
신뢰성 · 워치독 · 안전 상태신뢰성
테스트 · HIL · 정적 분석테스트
저전력저전력 설계
최적화최적화

신입에게 깊이 묻지는 않지만 "들어는 봤나" 를 확인한다.

"ISO 26262 를 아나"
  → ASIL 등급 개념 + "고장이 나도 안전한 상태로 간다는 것을 증명하는 체계"
  → 워치독을 '모든 작업이 돌았음을 확인한 뒤에' 먹이는 이유로 연결하면
     실무 감각이 보인다   ★ 이 연결이 차별화 지점

"AUTOSAR 가 뭔가"
  → 애플리케이션이 하드웨어를 직접 안 만지게 하는 계층 구조
  → Classic(ECU·C·정적) 과 Adaptive(고성능·C++·동적)

손으로 해 볼 것

말로만 아는 것과 해 본 것은 면접에서 바로 갈린다. 보드 하나(Nucleo·STM32 Discovery)면 충분하다.

① LED 를 레지스터 직접 조작으로 켠다        HAL 없이. 클럭부터
② 버튼 디바운싱 — 폴링과 인터럽트 두 가지로
③ UART 로 로그 출력                        printf 연결까지
④ 타이머 인터럽트로 정확한 1ms 틱
⑤ PWM 으로 LED 밝기 조절
⑥ ADC 로 전압 읽고 필터 적용
⑦ I2C 센서 하나 붙이기                     주소 스캐너부터
⑧ 링 버퍼 + UART 인터럽트 수신
⑨ 일부러 HardFault 를 내고 원인 찾기        널 포인터·정렬 위반
⑩ CAN 통신 두 노드                         가능하면

⑨가 특히 값어치가 있다. 폴트를 일부러 내고 CFSR 을 읽어 원인을 맞혀 보면, 면접에서 그 이야기를 할 수 있다.

// 일부러 내 보기
*(volatile uint32_t*)0 = 1;              // 널 포인터 쓰기
*(volatile uint32_t*)0x20000001 = 1;     // 정렬 위반
((void(*)(void))0x20000000)();           // 잘못된 함수 포인터
int x = 0; int y = 1 / x;                // 0 나누기 (UsageFault 활성 시)

면접 직전 점검

□ 지원 법인이 대구(ADAS)인지 경주(파워트레인)인지 확인했다
□ 담당 제품이 무엇인지 공고에서 확인했다
□ volatile 을 세 가지 경우로 설명할 수 있다
□ ISR 에서 하면 안 되는 것과 그 이유를 말할 수 있다
□ CAN 중재를 '비파괴' 까지 포함해 설명할 수 있다
□ 우선순위 역전을 예시로 설명할 수 있다
□ HardFault 원인 추적 절차를 말할 수 있다
□ 내가 만든 것 하나를 5분간 설명할 준비가 됐다
□ 되물어 볼 질문 3개를 준비했다

마지막 둘이 의외로 중요하다. 만든 것을 설명할 때 "왜 그렇게 했나" 와 "무엇이 어려웠나" 를 함께 말하면 깊이가 드러난다. 그리고 질문을 준비해 가면 관심도가 보인다.

되물어 볼 것 (예)
  대구 공장·R&D 센터 중 어느 쪽 업무인가 — 양산 지원이냐 선행 개발이냐
  담당 제품이 초음파·레이더·라이다·카메라·제어기 중 무엇인가
  AUTOSAR 적용 범위와 개발 프로세스(A-SPICE) 수준은
  본사(프랑스)·타 지역 거점과 어떻게 협업하나

한눈에 정리

  • 1순위(C·MCU·CAN)를 깊게 — 얕게 넓히는 것보다 낫다. 여기서 갈린다
  • volatile·ISR 금기·링 버퍼는 반드시 이유까지 설명할 수 있어야 한다
  • CAN 중재는 "비파괴라 최악 지연 계산이 가능하다" 까지 가면 좋은 답
  • 우선순위 역전은 RTOS 질문의 단골 — 예시(Pathfinder)와 해법(우선순위 상속)까지
  • HardFault 추적 절차는 "해 봤는지" 를 보는 질문이다
  • 3순위(ISO 26262·AUTOSAR)는 깊이가 아니라 연결 — 워치독 급여 방식으로 이으면 차별화된다
  • 보드로 10가지를 직접 해 본다. 특히 일부러 폴트를 내 보는 것
  • 만든 것을 "왜"와 "무엇이 어려웠나" 로 설명할 준비를 한다

기업 정보는 회사 개요, 기술 상세는 기술, 대구가 실제로 만드는 자율주차 시스템은 자율주차 편에 있다.

자율주차 — 대구가 실제로 만드는 것공고 기술 스택 — 무엇을 왜 요구하나