Bài viết được sự cho phép của tác giả Võ Quang Huy
Phỏng vấn lập trình php – Lang thang trên facebook thì đọc được bài viết của bạn “Anh Hùng Thời Loạn” Viết về những câu hỏi thường gặp khi phỏng vấn lập trình viên, thấy cũng khá hay nên mình lấy về chia sẽ cho những ai cần
Câu hỏi về PHP thuần: (dành cho cấp độ cơ bản)
1- PHP có mấy cách khai báo ?. Những cách nào được xem là chính thống và không ảnh hưởng khi các phiên bản update sau này?
– Có 3 cách là <? ? > và <?php ?> <% %>…cách 2 là chính thống
2- Hằng trong PHP khác gì so với biến ? Nếu 1 hằng được định nghĩa 2 lần, thì liệu có bị lỗi không ?. Cho ví dụ minh họa. Hằng có thể nội suy như biến hay không ?
– Khác nhau : hằng không thay đổi trong suốt chương trình, biến thì có
– Nếu định nghĩa hăng 2 lần thì sẽ có thông báo hằng đã tồn tại, chương trình vấn chạy với hằng được định nghĩa đầu tiên
– Không hiểu nội suy là cm gì luôn
3- Có bao nhiêu biến môi trường ?. $_REQUEST có thể nhận được giá trị từ form hay không ?
– Có 4 bến môi trường là : $_GET, $_POST, $_REQUEST,$_SERVER
– $_REQUEST nhận được, dùng nó trong trường hợp không biết dữ liệu nên là post hay get
Xem thêm các chương trình tuyển dụng PHP trên TopDev
4- Phân biệt sự khác nhau giữa $_POST và $_GET
– $_GET : gửi dl lên server thông qua URL, thông tin hiển thị lên url , kích thước url giới hạn
– $_POST : gửi dl lên server dưới dạng ẩn, không hiển thị param lên url, dữ liệu không giới hạn.
– Get thực thi nhanh hơn post vì cơ chế
+ get : quăng chuỗi string lên URL, server tách chuỗi lấy đc tham số
+ Post : các tham số được đóng gói vào 1 file tạm, sau đó trình duyệt gửi file tạm đó lên server và server lưu lại file tạm đó sau đó mới phân tích
– Post chậm hơn get
– Về tính bảo mật thì 2 thằng như nhau
5- Mảng tuần tự là gì ?. Khác gì với bất tuần tự ?. Để duyệt mảng ta dùng vòng lặp nào ?. Tại sao vòng lặp for, while, do….while lại không ưu tiên sư dụng trong duyệt mảng ?
– Mảng tuần tự là mảng mà các khóa được đánh theo số, bắt đầu từ 0
– Mảng bất tuần tự là các key của nó k phải là số mà có thể là string.
Để duyệt mảng tuần tự dùng vòng lặp for
Duyệt mang bất tuần tự dùng vòng lặp foreach
—không biết, vấn dùng for vs while duyệt hoài mà )
6- Để chuyển mảng thành chuỗi ta dùng hàm gì ?. Để tách chuỗi thành mảng ta dùng hàm gì?. Để gộp mảng ta dùng hàm gì ? Để tách mảng ta dùng hàm gì ?
– Chuyển mảng thành chuỗi dùng : implode(“Chuỗi nối”,$mảng)
– Chuyển chuỗi thành mảng dùng : explode(“Chuỗi tách”,$string)
– Để gộp mảng dùng : array_merge($mang1, $mang2)
– Để tách mảng dùng : array_slice($mang, vị trí tách, số lượng tách)
7- Cho biết sự khác nhau giữa serialize và json_encode. Lý giải theo cách bạn hiểu.
– Json_encode : để giải mã dữ liệu json đã được mã hóa bằng json_decode : từ phiên bản php 5.2 trở đi, người ta thay thế json_encode và decode cho serialize
– Serialize : chuyển đổi mảng thành string và unseriallize để lấy lại mảng ban đầu
Không biết luôn
8- Cookie và session có gì khác nhau ?. Người ta nói bản thân của session là cookie, điều đó đúng hay sai ?. Nếu muốn tăng thời gian sống của session thì thiết lập thế nào ?
– Cookie lưu ở client trên browser
– Session : lưu trên server và đồng thời ở client cũng có 1 cookie sinh ra tương ứng đúng như session id của nó trên server : PHPSESSID, các giá trị biến của session đc lưu trong file đó (dùng để quản lý đăng nhập)
– coi session là cookie cũng đúng.
– chả biết chỉnh ở đâu? Php.ini chăng ?
9- Giả sử bạn là chủ của server, làm thế nào có thể biết được các file session lưu ở đâu ?. Bạn có thể can thiệp, chỉnh sửa file session này hay không ?
Biết được. lưu ở file php.ini (tham số session.save_path)
10- Theo bạn, sự khác nhau của toán tử & và && là gì ?. Hãy cho biết $a++ và ++$a khác nhau ở đâu ?. Tính nhanh kết quả của đoạn code sau trong 2 phút:
<?php
$a=5;
echo $a++ + $a– + –$a + ++$a + $a++ + ++$a – $a– + $a;
?>
11- Mysql_close() cần thiết như thế nào trong thực tế ?. Vì sao ít thấy người dùng áp dụng nó
– Chắc chắn là cần thiết mà cần ntn thì cũng k biết. K có nó vẫn chạy phà phà
– Có lẽ có mysql_close() chỉ để tăng tính chặt chẽ của chương trình
12- Muốn chuẩn hóa dữ liệu về utf-8 ta phải làm gì ?
– Sử dụng dạng utf-8 trong meta charset
– Sử dụng utf-8-unicode-ci trong sql
13- Làm sao lấy được id vừa tiến hành thêm vào CSDL ngay ?
– Sử dụng hàm mysql_insert_id hoặc sử dụng limit(0,1) DESC
– Trong các framework sẽ có các hàm khác nhau hỗ trợ
14- Để đếm số dòng, ta nên dùng mysql_num_rows() trên câu truy vấn “select * from….” hay count trực tiếp trong câu truy vấn ?
– Không hiểu ý câu hỏi lắm.
15- Việc enter có giá trị hay không trong textarea bình thường (không nhúng khung soạn thảo). Và làm thế nào để có thể hiển thị ra bên ngoài thao tác xuống dòng như bình thường.
– Ít làm nên không hiểu lắm
16- fgets() và fgetc() khác nhau như thế nào ?. fgets() và fread() khác nhau ra sao ?. feof là gì, nó có ý nghĩa như thế nào ?. file_get_contents() khác gì so với fread() ?
– File_get_contents() : dùng để lấy nội dung của files
– Fread phải open xong mới đọc được, phải chỉ ra kích thước file