2012.09.10 아 리 필기시험

13031 단어 2012
남 대 구 취업 센터 기술 살롱 과 면접
 
9.10 번 만 필 시험 문제
1. 정규 표현 식, 메 일 합 법성 검 측, 정규 표현 식 규칙 을 제시 하여 정확 한 정규 표현 식 을 쓰 도록 합 니 다.
2. 영문 문장의 단어 개 수 를 통계 하고 나타 나 는 순서에 따라 출력 하여 데이터 구조 와 알고리즘 을 스스로 설계 한다.
1. 해답: 다음은 대소 문 자 를 구분 하지 않 는 정규 표현 식 입 니 다.i;2. 해답:
STEP 1: 처음부터 모든 문 자 를 읽 고 char * c 로 참조 합 니 다. 빈 칸 이나 구두점 기 호 를 만 나 단어 가 끝 납 니 다.
STEP 2: 단 어 를 출력 하고 이 단 어 를 hash 처리 합 니 다. hash (* c)% 1000, hashmap 에 저장 합 니 다. 해당 하 는 < key, value > 는 단어 와 단어 가 나타 나 는 횟수 입 니 다.
STEP 3: 두 번 째 단 어 를 읽 고 hash 모드 를 추출 한 후 hashmap 에 있 는 지 여 부 를 판단 합 니 다. 있 으 면 대응 하 는 value 에 1 을 추가 하고 없 으 면 출력 하고 hashmap 에 저장 합 니 다.
단계 4;글 의 끝 을 읽 을 때 까지 세 단 계 를 반복 합 니 다.
 
또 9.6 의 필기시험 문제
1. 분포 식 메시지 시스템 설계
2. 그림 이 없 는 고리 의 개 수 를 구한다.
 
 
9.12 면접
1. 면접 관 이 직접 소개 하고 제 소 개 를 하 겠 습 니 다. 2. 자신 이 배 운 가장 좋 은 과목 (건물 주가 데이터 구 조 를 선 택 했 고 면접 관 의 이력서 에 표 시 했 습 니 다) 3. 모든 데이터 구조의 특징 을 말씀 드 리 겠 습 니 다.스 택 과 대기 열의 차이, 배열 과 링크 의 차이
해답:
① 데이터 의 논리 구조 에서 데이터 구 조 는 선형 구조 와 비 선형 구조 로 나 뉜 다.선형 구 조 는 일반적인 선형 표, 제한 선형 표 와 선형 표 로 나 뉜 다.그 중에서 제 한 된 선형 표 는 창고, 대열 과 열 을 포함한다.선형 표 보급 은 배열 과 광의 표를 포함한다.비 선형 표 는 집합, 나무 구조 와 도형 구 조 를 포함한다.그 중에서 나무 구 조 는 일반 나무 와 이 진 트 리 로 나 뉘 는데 그림 은 방향 도 와 무 방향 도 로 나 뉜 다.
선형 표: 선형 표 는 같은 유형의 n (n > = 0) 개 데이터 요 소 를 가 진 유한 한 서열 이다.
선형 표 는 순서 표 와 링크 두 가지 표현 형식 이 있다.순서 표 는 주소 로 연 속 된 저장 장치 로 선형 표 의 데이터 요 소 를 순서대로 저장 합 니 다.링크 는 논리 적 으로 인접 한 두 요소 가 논리 적 으로 도 인접 하도록 요구 하지 않 고 '체인' 을 통 해 데이터 요소 간 의 논리 적 관 계 를 구축 하 는 것 이다.
문자열: 문자열 (또는 문자열) 은 0 개 이상 의 문자 로 구 성 된 빈 시퀀스 입 니 다.
나무: 나 무 는 N (N > = 0) 개의 결점 의 유한 집합 이 고 N = 0 일 때 빈 나무 라 고 부른다.임의의 비 빈 나무 에서 만족 해 야 한다. 1) 있 고 특정한 뿌리 라 고 불 리 는 결점 만 있다.2) N > 1 시, 나머지 결점 은 m (m > 0) 개의 서로 교차 하지 않 는 유한 집합 T1, T2, · ·, Tm 로 나 눌 수 있 으 며, 그 중 각 집합 자 체 는 또 하나의 나무 이 며, 뿌리 결점 의 자나무 라 고 부른다.분명히 나무의 정 의 는 귀속 적 이 고 귀속 적 인 데이터 구조 이다.
그림: 정점 집합 과 변 집합 으로 구 성 된 데이터 구조.
② 스 택: 한 끝 에 만 삽입 하고 삭제 할 수 있 는 선형 표, 후진 선 출;대기 열: 한 끝 에 삽입 하고 다른 한 끝 에 삭 제 된 선형 표 는 먼저 나 옵 니 다.
③ 배열 은 하나의 주소 로 연속 적 인 저장 장치 로 선형 표 의 데이터 요 소 를 순서대로 저장 하고 아래 표 시 를 통 해 배열 의 임 의 요 소 를 신속하게 방문 할 수 있 으 나 동시에 삽입, 삭제 하 는 것 이 비교적 번거롭다.링크 접근 요 소 는 옮 겨 다 녀 야 합 니 다. 시간 이 복잡 하고 삭 제 를 삽입 하면 조작 지침 만 있 으 면 됩 니 다.
4. 10 분 동안 한 대열 의 파티 가입 작업 을 작성 합 니 다.
 C 언어 와 체인 메모리 로 이 루어 집 니 다.
Queue. h 파일:
//         

//typedef struct node  

//{  

//    int data;  

//    struct node *next;  

//}Node,*PNode; 



//         

typedef struct node *PNode;

typedef struct node  

{  

    int data;  

    PNode next;

}Node;



typedef struct{

	PNode front;

	PNode rear;

	int size;

}Queue;



//       

Queue *InitQueue();



//      

void DestroyQueue(Queue *pqueue);



//      

void ClearQueue(Queue *pqueue);



//        

int IsEmpty(Queue *pqueue);



//      

int GetSize(Queue *pqueue);



//      

PNode GETFront(Queue *pqueue,int *item);



//      

PNode GETRear(Queue *pqueue,int *item);



//      

PNode EnQueue(Queue *pqueue,int item);



//      

PNode DeQueue(Queue *pqueue,int *item);


Queue. c 파일:
#include "Queue.h"

#include <malloc.h>

#include <stdio.h>



//       

Queue *InitQueue(){

	Queue *queue = (Queue *)malloc(sizeof(Queue));

	if(queue != NULL){

		queue->front = NULL;

		queue->rear = NULL;

		queue->size = 0;

	}



	return queue;

}



//        

int IsEmpty(Queue *pqueue){

	if(pqueue->front == NULL && pqueue->rear == NULL)

		return 1;

	else 

		return 0;

}





//      

int GetSize(Queue *pqueue){

	return pqueue->size;

}



//      

PNode GETFront(Queue *pqueue,int *item){

	if(IsEmpty(pqueue)!=1&&item!=NULL)  

    {  

       *item = pqueue->front->data;  

    }  

    return pqueue->front;  

}



//      

PNode GETRear(Queue *pqueue,int *item){

	if(IsEmpty(pqueue)!=1&&item!=NULL)  

    {  

       *item = pqueue->rear->data;  

    }  

    return pqueue->rear;   

}



//      

PNode EnQueue(Queue *pqueue,int item){

	PNode node = (PNode)malloc(sizeof(item));

	if(node != NULL){

		node->data = item;

		node->next = NULL;

		if(IsEmpty(pqueue)){

			//      

			pqueue->front = node;

		}else{

			pqueue->rear->next = node;

		}

		pqueue->rear = node;

		pqueue->size++;

	}

	return node;

}



//      

PNode DeQueue(Queue *pqueue,int *item){

	PNode node = pqueue->front;

	if(IsEmpty(pqueue)!=1 && node != NULL){

		pqueue->front = node->next;

		free(node);

		pqueue->size--;

		if(pqueue->size == 0)

			pqueue->rear = NULL;



	}

	return pqueue->front;

}



/**  **/

void print(int i)

{

	printf("      %d
",i); } main() { Queue *pq = InitQueue(); int i,item; printf("0-9 :
"); for(i=0;i<10;i++) { EnQueue(pq,i); GETRear(pq,&item); printf("%d ",item); } }

  
5. 다 중 스 레 드 잠 금 예제 작성
다 중 스 레 드 잠 금 의 네 가지 필요 조건:
4.1. 상호 배척 사용 (자원 독점) 한 자원 은 매번 한 프로 세 스에 만 4.2 를 사용 할 수 있 고 강점 할 수 없다 (박탈 할 수 없다)    자원 신청 자 는 자원 점유 자 에 게 서 자원 을 강제로 빼 앗 을 수 없습니다. 자원 은 점유 자가 자발적으로 4.3 을 방출 하고 요청 과 유지 (일부 분배, 점유 신청) 한 프로 세 스 가 새로운 자원 을 신청 하 는 동시에 기 존의 자원 에 대한 점유 (이것 만 이 동적 신청 이 고 동적 분배) 4.4. 순환 대기 행렬 이 존재 합 니 다.{P1, P2,............................................................................................
실제 예:
package com.damlab.fz;



public class DeadLock {

    public static void main(String[] args) {

        Resource r1= new Resource();

        Resource r2= new Resource();

        //       r1,r2    

        Thread myTh1 = new MyThread1(r1,r2);

        Thread myTh2 = new MyThread2(r1,r2);

        myTh1.start();

        myTh2.start();

    }

}



class Resource{

    private int i;

}



class MyThread1 extends Thread{

    private Resource r1,r2;

    public MyThread1(Resource r1, Resource r2) {

        this.r1 = r1;

        this.r2 = r2;

    }



    @Override

    public void run() {

        while(true){

        //   r1  ,   r2      

        synchronized (r1) {

            System.out.println("1      r1  ");

            synchronized (r2) {

                System.out.println("1      r2  ");

            }

        }

        }

    }

    

}



class MyThread2 extends Thread{

    private Resource r1,r2;

    public MyThread2(Resource r1, Resource r2) {

        this.r1 = r1;

        this.r2 = r2;

    }



    @Override

    public void run() {

        while(true){

        //   r2  ,   r1  

        synchronized (r2) {

            System.out.println("2      r2  ");

            synchronized (r1) {

                System.out.println("2      r1  ");

            }

        }

        }

    }

    

}

 
6. TCPIP 는 몇 가지 상태 가 있 습 니까?
해답: 사실은 TCP 가 세 번 의 악 수 를 통 해 연결 되 고 네 번 의 악 수 를 통 해 연결 되 는 과정 에서 TCP 는 몇 가지 상태 가 있다.
상세 참조 http://blog.sina.com.cn/s/blog_6a2787d40102uwte.html
7. 품사 분석 과 문법 분석 작용 은 무엇 입 니까?
해답: 컴 파일 과정 은 품사 분석, 문법 분석, 의미 검사, 코드 생 성, 코드 최적화 등 을 포함한다.
어법 분석: 문자 로 구 성 된 단어 가 합 법 적 인지 분석 하고 문제 가 없 으 면 단어 흐름 이 생 긴 다.
문법 분석: 단어 로 구 성 된 문장 이 합 법 적 인지 분석 하고 문제 가 없 으 면 문법 트 리 가 생 긴 다.
8. 1 억 개의 숫자 가 하나의 큰 파일 에 존재 하 는데 지금 은 하나의 숫자 를 제시 하여 이 숫자 가 파일 에 있 는 지 아 닌 지 를 어떻게 판단 합 니까?
해답: 이 수 억 개 를 옮 겨 다 니 며 bit - map 으로 이 수 억 개 를 저장 합 니 다. 대응 하 는 bit 위 치 는 1 입 니 다. 약 10 ^ 8 / 8byte = 12.5 메가바이트 의 메모리 저장 공간 만 있 으 면 됩 니 다. 제 시 된 수 에 따라 비트 연산 을 통 해 해당 수의 위치 가 1 인지 여 부 를 찾 습 니 다. 이 수 는 문서 에 있 음 을 나타 내 고 그렇지 않 으 면 파일 에 없습니다.
9. 가장 성취 감 있 는 프로젝트
10. 자바 와 c + +, c + + 의 메모리 관 리 는 어떻게 합 니까?
해답:
1.
자바 에서 메모리 에 대한 분 배 는 동적 입 니 다. 대상 을 대상 으로 하 는 메커니즘 을 사용 합 니 다. 연산 자 new 를 사용 하여 모든 대상 에 게 메모리 공간 을 분배 합 니 다. 또한 실제 메모 리 는 프로그램 운행 상황 에 따라 달라 집 니 다. 프로그램 이 실 행 될 때마다 자바 시스템 은 자동 으로 메모 리 를 스 캔 하고 장기 적 으로 사용 하지 않 는 공간 을 '쓰레기' 로 수집 하여 시스템 자원 을 더욱 충분히 이용 합 니 다.시스템, 프로그래머 는 메모리 관리 문제 에 관심 을 가 질 필요 가 없습니다. 이것 은 자바 프로그램의 작성 을 간단명료 하 게 만 들 었 고 메모리 관리 상의 오류 로 인해 시스템 에 문제 가 생기 는 것 을 피 할 수 있 습 니 다. C 언어 는 malloc () 와 free () 를 통 해이 두 개의 라 이브 러 리 함 수 는 각각 메모리 공간 을 분배 하고 방출 하 는 것 을 실현 합 니 다. C + + 언어 에 서 는 연산 자 new 와 delete 를 통 해 메모 리 를 분배 하고 방출 합 니 다. C 와 C + + 이 중 체제 에 서 는 프로그래머 가 메모리 사용 문 제 를 매우 자세하게 처리 해 야 합 니 다. 한편, 이미 방출 된 메모리 에 대해 다시 방출 하거나 할당 되 지 않 은 메모리 에 방출 하면 다운 이 발생 합 니 다. 다른 한편, 예 를 들 어 다른 한편,만약 에 장기 적 으로 사용 하지 않 거나 더 이상 사용 하지 않 는 메모리 에 대해 방출 하지 않 으 면 시스템 자원 을 낭비 하고 심지어 이 로 인해 자원 이 고갈 된다.
2
자바 는 모든 클래스 에서 전역 변 수 를 정의 하지 않 고 특정한 클래스 에서 공용 정적 변 수 를 정의 하여 전역 변 수 를 완성 합 니 다.

3
자바 는 goto 문 구 를 사용 하지 않 고 try - catch - finally 이상 처리 문 구 를 사용 하여 goto 문 구 를 처리 하 는 데 오류 가 발생 하 는 기능 을 대체 합 니 다.

4
자바 는 헤더 파일 을 지원 하지 않 습 니 다. 면 C 와 C + 언어 에서 모두 헤더 파일 로 클래스 의 원형, 전역 변수, 라 이브 러 리 함수 등 을 정의 합 니 다. 이러한 헤더 파일 의 구 조 를 사용 하여 시스템 의 운영 유지 보수 가 상당히 복잡 합 니 다.

5
자바 는 매크로 정 의 를 지원 하지 않 고 키워드 final 을 사용 하여 상수 정 의 를 정의 합 니 다. C + + 에 서 는 매크로 정 의 를 사용 하여 상수 정 의 를 실현 합 니 다. 이것 은 프로그램의 가 독성 에 맞지 않 습 니 다.

6
자 바 는 모든 데이터 유형 에 대해 고정된 길 이 를 분배 한다. 예 를 들 어 자바 에서 int 유형 은 항상 32 비트 이 고 C 와 C + + 에 서 는 서로 다른 플랫폼 에 대해 같은 데이터 유형 에 따라 서로 다른 바이트 수 를 분배 한다. 똑 같이 int 유형 이 고 PC 기기 에 서 는 2 바이트 즉 16 비트 이 며 VAX - 11 에 서 는 32 비트 이다. 이 로 인해 C 언어 는 이식 할 수 없 게 되 었 고 자 바 는 크로스 플랫폼 성 (플랫폼 무관 성) 을 가진다.

7
유형 변환 이 다 릅 니 다. C 와 C + + 에 서 는 포인터 로 임의의 유형 변환 을 할 수 있 으 며, 항상 안전성 을 가 져 올 수 있 습 니 다. 자바 에 서 는 실행 시 시스템 이 대상 에 대한 처 리 를 유형 호환성 검 사 를 하여 안전 하지 않 은 전환 을 방지 해 야 합 니 다.

8
구조 와 연합 의 처리. C 와 C + + 에 서 는 구조 와 연합 의 모든 구성원 이 공유 되 어 안전성 문 제 를 가 져 왔 으 며, 자바 에 서 는 구조 와 연합 이 전혀 포함 되 어 있 지 않 으 며, 모든 내용 이 클래스 에 포함 되 어 있다.

9
자 바 는 더 이상 포인 터 를 사용 하지 않 습 니 다. 포인 터 는 C 와 C + + 에서 가장 유연 하고 오류 가 발생 하기 쉬 운 데이터 형식 입 니 다. 포인터 가 진행 하 는 메모리 주소 조작 은 예측 할 수 없 는 오 류 를 초래 할 수 있 습 니 다. 또한 포인 터 를 통 해 특정한 메모리 주 소 를 명시 적 으로 변환 한 후 C + + 의 개인 구성원 에 게 접근 하여 안전성 을 파괴 할 수 있 습 니 다. 자 바 는 포인 터 를 완전히 제어 하기 때문에 프로그래머 는 할 수 없습니다.모든 포인터 작업 을 직접 진행 합 니 다.
 

C + + 메모리 관리: 자세 한 내용 http://www.cnblogs.com/lancidie/archive/2011/08/05/2128318.html

좋은 웹페이지 즐겨찾기