Xin tài liệu phỏng vấn

TrueLie
06-06-08, 01:14
Em đang cần tìm một số tài liệu về các câu hỏi technique thường gặp khi phỏng vấn về C/C++, Java, Database, UML, IQ/EQ test. Có đáp án luôn thì càng tốt. Các câu hỏi dạng trắc nghiệm, hoặc cho một đoạn chương trình ngắn đoán output là gì hay lỗi chương trình ở đâu ...

Bác nào có thì share em với.

Cảm ơn các bác.
TrueLie.
folie
06-06-08, 03:34
Thế nào Lai cũng đang đi xin việc giống mình à. Mình qua được cái test kỹ thuật kia giồi :D, ngày mai nói chuyện lương bổng. Đương không biết làm sao để mình được lương cao đây.

PS: Mình có tài liệu Test your C++ Skill, sách. Nêu Lai ở Paris thì cho mượn photo được.
Cái Java bữa trước nhận được chưa mà hổng thấy hồi âm vậy? Nó là ở javagalaxy.com đấy.
TrueLie
06-06-08, 03:47
Yeah mình cũng đang chuẩn bị xin nên luyện 1 tí :D Chúc mừng folie nhé. Phỏng vấn 1 phát ăn ngay thì tốt quá rồi. Đi nói chiện lương thì cứ mạnh dạn vào, nếu vừa làm thèse xong thì cứ coi như mấy năm đấy là mấy năm kinh nghiệm cho hoành tráng.

Tiếc quá mình ko ở Paris. Tài liệu hôm nọ folie gửi đã nhận được rùi. Confirmer qua mail rồi mà folie không nhận được à? Merci beaucoup ;)
Look
06-06-08, 11:47
Thử làm thêm cái này xem sao:

IQ TEST

Bài 1.
Có 5 viên bi được ký hiệu từ 1 đến 5, được xếp vào 5 vị trí, các vị trí được đánh số thứ tự từ 1 đến 5. Ban đầu viên bi i ở đúng vị trí thứ i. Có một luật đổi chỗ các viên bi, thể hiện bởi một hoán vị của 5 số tự nhiên đầu tiên, ví dụ như sau:

1 2 3 4 5 (ban đầu)
2 5 3 1 4 (luật biến đổi)

nghĩa là sau một lần biến đổi thì viên bi ở vị trí 2 chuyển lên vị trí 1, viên bi ở vị trí 5 chuyển sang vị trí 2, viên bi ở vị trí 3 thì giữ nguyên, viên bi ở vị trí 1 thì chuyển sang vị trí 4, và viên bi ở vị trí 4 thì chuyển xuống vị trí 5.
Hỏi quá trình biến đổi theo luật trên liệu có quay trở về thứ tự ban đầu hay không?


Bài 2.
Dãy số 2008086…. bắt đầu là 4 chữ số 2008, bắt đầu từ chữ số thứ 5 trở đi thì bằng chữ số hàng đơn vị của tổng của 4 chữ số đứng ngay trước đó.
Hỏi quá trình kéo dài dãy số đó tiếp tục không quá bao nhiều lần thì ta có thể kết luận rằng có gặp lại (hoặc không thể gặp lại) dãy 2008 ban đầu?

Bài 3.
Viết tiếp vài số hạng mà bạn cho là hợp lý nhất trong dãy số sau đây
a) 2, 4, 12, 36, 54,
b) 12, 5, 25, 4, 26,

Bài 4.
Cho lưới hình vuông gồm 3 x 3 ô vuông sau đây:

8 1 *
* 5 7
4 * *

Hãy điền các số mà bạn cho là thích hợp nhất vào các ô còn trống (ký hiệu ô trống là dấu *).

Bài 5.
Cho một băng giấy gồm N ô, sắp theo hàng ngang, ban đầu các ô đều để trống. Hai người chơi luân phiên, ai đến lượt mình đi sẽ chọn một ô còn trống hoặc hai ô cạnh nhau còn trống để đánh dấu bằng ký hiệu của mình. Người thua cuộc là người mà đến lượt mình đi thì không còn ô để đánh dấu.
Hãy chỉ ra chiến lược chơi cho người đi trước sẽ thắng cuộc.


Bài 6.
Cho bàn cờ, 3 x 3 trong đó có hai mã đen (ký hiệu là Đ) và hai mã trắng (ký hiệu là T) như hình sau đây (các ô trống ký hiệu là dấu *)

T * T
* * *
Đ * Đ

Các quân mã đi theo luật cờ vua. Hai bên đen và trắng lần lượt thay phiên nhau đi, ai đến lượt mình đi có thể chọn một quân cờ bất kỳ để đi một nước đi và sao cho không đi vào nước chiếu của đối phương.
Liệu sau một số hữu hạn các nước đi thì bên trắng có đổi chỗ cho bên đen được hay không?
Look
06-06-08, 11:50
C/C++

Bài 1. Cho chương trình sau
#include <stdio.h>
void f() { static int x = 9; x+=10; printf(“\t%d”,x); }
void main(){
int x=1;
f();
printf(“\t%d”,x);
f(); }

Kết quả in lên khi chạy chương trình là:
a. 19 1 19
b. 19 1 29
c. 19 19 19
d. 11 1 11
Hãy chọn đáp án đúng

Bài 2. Xét chương trình sau đây
#include <stdio.h>
void main(){
int i=1;
switch(i) {
case 1: printf("\t%d",i); i+=3;
case 2: printf("\t%d",i); i+=4;
}
printf("\t%d",i); }
Kết quả khi chạy chương trình là:
a. 1 4 6
b. 1 4
c. 1 4 8
d. 1 2 6
Hãy chọn câu trả lời đúng.

Bài 3. Chọn các khẳng định đúng trong các khẳng định sau:
1. “a” là hằng ký tự
2. ‘a’ là hằng ký tự
3. “a” là hằng xâu ký tự gồm 2 ký tự ‘a’ và ‘\0’
4. “a” là hằng xâu ký tự gồm một ký tự là chữ cái a có mã 97
5. Ký tự ‘0’ có mã 48 , không có ký tự ‘\0’

Chọn đáp án đúng sau đây:
a. 1 và 5
b. 2 và 5
c. 2 và 4
d. 2 và 3

Bài 4. Cho đoạn chương trình sau đây
1. char *x, y[20];
2. x=”LAP TRINH”;
3. y =”C++”;
4. gets(y)
5. gets(x)
Các lệnh sau đây là sai hoặc vô nghĩa
a. 3 và 5
b. 2 và 4
c. 2 và 3
d. 4 và 5
e. Tất cả đều đúng
Hãy chọn đáp án đúng


Bài 5. Chương trình sau đây xin cấp phát 5 biến động 2 byte để chứa các bình phương của 5 số tự nhiên đầu tiên, sau đó in dãy các giá trị này lên màn hình.
#include <stdio.h>
#include <malloc.h>
void main(){
int *p,*q, i,n=5;
p = (int*) malloc (n*sizeof(int));
q=p; for(i=1;i<=n;i++) {*q=i*i; q++;}
for(i=1;i<=n;i++) {printf("\t %d",*q); q++;}
}
Chương trình cho kết quả sai vì
a. Cấp phát thiếu bộ nhớ
b. Không cần khai báo con trỏ q, thay các con trỏ q trong chương trình thành p
c. Chưa đặt lại con trỏ q = p trước toán tử for thứ 2
d. Lệnh q++ phải sửa thành (*q)++
Hãy chọn câu trả lời đúng.

Bài 6. Chương trình sau lập bảng giá trị của các hàm sin(x), cos(x), ex và sqrt(x) trên đoạn [1, 10] với số gia bước tăng là 0.5:
#include <stdio.h>
#include <math.h>
main(){
m[1]=sin; m[2]=cos, m[3]=exp; m[4]=sqrt;
{int i; double x=1.0;
while (x<=10.0)
{ for(i=1; i<=4; i++) printf(“%10.2f”,m[i](x)); x+=0.5; printf(“\n”); }
}
Lệnh đầu tiên trong hàm main phải là lệnh nào:
1. double m[5](double);
2. double (*m[5])(double) ;
3. double (*m[4])(double) ;
4. char *m[4];
5. double m[5];

Bài 7. Xét khai báo sau đây:
const m=3,n=4;
float a[m][n];
float *pa=(float*)a;
Khi đó, phần tử hàng i, cột * của mảng a có:
1. giá trị là (float*) a + i*n + *
2. địa chỉ là *( (float*) a + i*n + *)
3. giá trị là *(pa+i*n+*)
4. địa chỉ là pa+i*n + *
Các khẳng định sau đây là đúng:
a. 1 và 2
b. 3 và 4
c. 1 và 3
d. 2 và 4
e. Tất cả đều đúng
Hãy chọn đáp án đúng.

Bài 8. Với khai báo
const m=4,n=5;
float a[m][n];
hàm main() sẽ gọi hàm nhập mảng a như sau: nhapmang((float*)a,m,n);
Hãy điền vào chỗ # biểu thức phù hợp để hàm nhapmang đúng đắn:
void nhapmang(float *pa, int m, int n)
{ int i,*;
for(i=0;i<m;i++) for(*=0;*<n;*++)
{ printf(“a[%d,%d]=”,i,*); scanf(“%f”, #); }
}
Tại # ta điền vào như sau:
1. *(pa+i*n+*)
2. (pa+i*n+*)
3. pa[i][*]
4. pa[i,*]
5. *pa[i][*]
Hãy chọn đáp án đúng

Bài 9. Hàm sau đây
char *f(char *s,int k, int n)
{ int i,*=0;
char x[200];
for(i=0;s[i]!=’\0’;i++)
if((i>=k)&&(*<n)) { x[*]=s[i]; *++; } x[*]=’\0’;
return x; }
Cho giá trị là:
1. Hằng xâu gồm n ký tự là xâu con của xâu s, lấy từ vị trí thứ k.
2. Con trỏ kiểu char, trỏ vào xâu gồm n ký tự là xâu con của s, lấy từ vị trí k. (*)
3. Mảng kiểu char, gồm n ký tự là xâu con của s, lấy từ vị trí k.
4. Rỗng (NILL)

Bài 10. Cho chương trình sau đây
#include <stdio.h>
void sapxep(float *pa, int i)
{ int i,*; float c;
for(i=0;i<n-1;i++) for(*=i+1;*<n;*++)
if ( #1) { c=pa[i]; pa[i]=pa[*]; pa[*]=c;}
}
void main()
{ int n = 5;
float a[5]={ 4.5, 8.0, 1.0, -6.2, 7.8};
#2;
}
Tại #1, #2 tương ứng điền vào các biểu thức là:
1. *pa[*]<*pa[i] và sapxep(&a,n)
2. (pa+*)<(pa+i) và sapxep(a,n)
3. pa[*]<pa[i] và sapxep(a,n)
4. *(pa+*)<*(pa+i) và sapxep(&a,n)
Hãy chọn đáp án đúng
lão ma
06-06-08, 14:18
Thế nào Lai cũng đang đi xin việc giống mình à. Mình qua được cái test kỹ thuật kia giồi :D, ngày mai nói chuyện lương bổng. Đương không biết làm sao để mình được lương cao đây.
Kinh nghiệm khi nói về lương bổng cho người mới ra trường khi phỏng vấn là tránh kì kèo thêm 1 bớt 2. Nếu position mình applied có mức lương tương đối, không thấp quá so với khả năng kiến thức của mình thì nên chấp nhận. Sau khi làm việc có kinh nghiệm từ 1 năm trở lên lúc đó có thêm công việc trách nhiệm đòi tăng lương dễ hơn nhiều.

Nên điền đơn xin việc nhiều nơi cùng lúc, vì lúc đó có thể có cơ hội lựa chọn, đồng thời cũng lấy đó làm kinh nghiệm. Giả dụ miu được 2 chỗ phỏng vấn và có cơ hội làm việc, nhưng một chỗ thì lương thấp, chỗ kia lương cao. Vậy là có cớ để show cho chỗ lương thấp để họ thấy và nâng mức lương lên sao cho xứng đáng.

Gook miu nhé :rose:
TrueLie
06-06-08, 16:52
Cảm ơn bác Lúc, nhưng sao ít thế ạ :D

Có cái nào dài dài hơn thì cho em xin ;) Tiếng Anh Pháp Việt đều được.
folie
06-06-08, 19:07
Cám ơn lão ma. Em về giồi đây. Em cũng đã hành động giống như bác nói, nghĩa là không kỳ kèo gì cả, bởi mình bữa trước đã ngu là đưa ra khoảng lương acceptable thì nó cứ lấy cận dưới thôi, là cái mình muốn giồi còn đòi hỏi gì nữa :D. Thực ra bữa trước em có kỳ vọng cao hơn, nhưng các cty đều từ chối nên em bây giờ hạ chuẩn xuống, xác định đâu là mục tiêu ngắn hạn của mình trước rồi đến dài hạn sau. Mình nhiều khi không thể có lựa chọn để thoả mãn tất cả các mục tiêu cùng một lúc phải không bác. Cần reasonable một chút bác nhỉ?

@bác Lôk thân mến, mấy cái test IQ của bác em chắc chỉ để cho dân đi thi test IQ chuyên nghiệp, chứ đi test kiếm việc làm kiểu này mình chỉ có khoảng 1' để trả lời cho 1 câu dạng đó, mấy cái đề của bác nội đọc hiểu đã mất mịa nó hai phần ba thời gian rồi ;). Phần C/C++ thì em thấy gần như là nó bắt mình đoán kết quả ra, chứ không phải liệt kê một loạt kết quả cho mình chọn.

@Bạn Lai : Kinh nghiệm ko nhiều nhặn lắm của mình : nắm vững phần xử lý Exception cả java và C++, mình đi mấy chỗ đều hỏi nhiều về cái này cả. Theo mình hiểu thì các ứng dụng lớn cần phải xử lý tốt về các Exception này. Nắm vững các khái niệm kế thừa và tính visibility của class, method, attribute, và các thuộc tính abstract, final(java)/constant(C++), static đi kèm. Khi nào thì được dùng cái gì, ...Ngoài ra về java, nếu bạn apply vào các cty đang làm về new technologie, kiểu gì cũng có hỏi về Design Pattern (23 design patterns + các design patterns của J2EE). Về SQL kiểu gì cũng hỏi về JOIN (INNER và OUTER khác nhau như thế nào).
Tạm thế đã, khi nào nhớ mình gõ tiếp :D.

À về C, mình thấy cái quyển sách mình có, nó hỏi đại loại về toán tử, kiểu :

- printf/cout <<(a+++++b)
- printf(%d%d%d%d%d, ++a, a, a++, a--, --a)
đại loại thế và mình cần nắm vững là các thao tác này thằng C/C++ hoạt động theo kiểu stack và vì vậy các giá trị trên sẽ được tính lần lượt từ PHẢI qua TRÁI chứ ko phải normal là TRÁI qua PHẢI. Ngoài ra còn con trỏ mảg, kiểu mảng ptr[][][], rồi lấy *ptr, **ptr, ***ptr nọ kia. Lúc nào mình rảnh mình gõ vào cái ví dụ lên hen.
Prototay
06-06-08, 19:15
Nghe nói chương trình sát hạch kĩ sư tin học của Nhật gì đấy có nhiều câu hỏi lắm. Không biết có liên quan gì đến tài liệu mà các bạn cần không nhỉ?
TrueLie
06-06-08, 19:45
@folie: Cảm ơn folie nhé, còn gì nữa thì cứ tung hết lên đi :D

@Prototay: Bác em đưa luôn cái hạch sách ... à nhầm sát hạch đấy lên đi ;) Thanks bác.
Prototay
06-06-08, 19:56
Cụm từ "Japan Information Technology Engineer's Examination" này thì phải! Chú Lai gúc thử xem, anh chỉ hỏi cho biết thôi.
CuteguB
06-06-08, 21:13
Mấy cái bài IQ của Look mà bác nào đang phong độ cao CPU xử lý tốc độ nhanh + nhớ nhiều pattern thì chỉ độ 30s/câu.

Cái ** của C em thấy ít chỗ hỏi phết, vì giờ toàn hỏi java hay cái gì tương tự thế. Nhiều thằng còn chả biết/chả dùng bao giờ.
Look
07-06-08, 00:48
@Chu Lai: Của nhà trồng được nên xào nấu đãi khách, gọi là của ít lòng nhiều, không được chê ít. (Để biết thêm dạng)
Bạn Lai nên theo lời khuyên và tài liệu của Folie - là người vừa trải qua kinh nghiệm và rất nhiệt tình.

@Folie: đúng như CuteguB nói, mấy bài IQ đó, mỗi câu chỉ được làm trong 1 phút. (Làm nhiều thành quen thôi.)

@CuteguB
Dùng C/C++ hay Java còn tùy thuộc vào nơi nhận mình vào làm việc. Trừ những nơi đòi hỏi nhiều về học thuật thì nói chung các câu hỏi về ngôn ngữ lập trình đặt ra yêu cầu là:
- Nắm chắc kiến thức cơ sở như là quy tắc, cú pháp (đương nhiên). Hỏi trắc nghiệm sẽ xoáy vào các nhầm lẫn hoặc ngộ nhận thường xảy ra, cũng là để người được nhận vào làm việc sẽ có thêm độ tin cậy.
- Và đặc điểm mạnh của công cụ. Cái này hơi khó một chút.

Ví dụ kiểu con trỏ (point type) là sự mềm dẻo và rất mạnh của họ hàng nhà C nói chung, nó rất cần thiết khi cần lập trình ra tấm ra món, chẳng hạn như thiết kế hệ thống nói riêng, phân tích & thiết kế hướng đối tượng nói chung.
Con trỏ không thể vắng mặt trong sự kế thừa, trong đó xuất hiện một loạt các khái niệm và quy tắc quan trọng về:
- Xác định đối tượng và thành phần của lớp,
- "Đa hình - polymorphism" (có thể dịch đa hình là tương ứng bội)
- "Hàm ảo, hàm ảo dịch chuyển, hàm ảo thực sự và lớp trừu tượng- virtual function, virtual override function, pure virtual function, abstract class"
- Lớp mẫu và hàm mẫu, vv..
Còn một điểm nữa là C không thể làm việc với chuỗi ký tự một cách thân thiện như các ngôn ngữ làm "trong suốt" về địa chỉ (như Pascal là điển hình). Cụ thể là C chỉ có thể làm việc với xâu ký tự thông qua kiểu con trỏ. Nếu tò mò, ta có thể thử lập các hàm của Pascal trong C, ví dụ như các hàm và "thủ tục": pos, copy, delete, insert, ….

Hiện nay Java thường được hỏi nhiều hơn vì đặc điểm của nơi dùng công cụ và những ứng dụng dễ phát triển được xây dựng nhờ ngôn ngữ thuộc "lớp trên" thân thiện và hữu hiệu hơn đối với người tạo sản phẩm và người dùng sản phẩm.