-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
159 lines (143 loc) · 12.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>php questions recruitment</title>
<link rel="stylesheet" href="./src/output.css">
</head>
<body dir="rtl" class="bg-gray-100 p-4 font-sans">
<div class="max-w-3xl mx-auto">
<h1 class="text-3xl font-bold mb-6 text-right text-indigo-700">php سوالات تخصصی برای استخدام در</h1>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۱:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">توضیح دهید که چگونه میتوانید از ابزار Composer در
پروژههای PHP استفاده کنید. </p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">Composer یک مدیر وابستگی برای PHP است که به شما
امکان میدهد پکیجها و وابستگیهای خود را مدیریت کنید. برای استفاده از Composer، فایل composer.json
را ایجاد کرده و وابستگیهای خود را در آن تعریف کنید. سپس با استفاده از دستور composer install،
Composer وابستگیهای شما را نصب میکند.</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۲:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">تفاوت بین include و require در PHP چیست؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">include و require هر دو برای اضافه کردن یک فایل به
پروژه PHP استفاده میشوند، اما تفاوت اصلی آنها در مدیریت خطا است. اگر فایل مورد نیاز با include
وجود نداشته باشد، PHP یک warning ایجاد میکند و ادامه میدهد. اما اگر از require استفاده شود و فایل
مورد نیاز وجود نداشته باشد، PHP یک fatal error ایجاد میکند و اجرای برنامه را متوقف میکند.</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۳:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">Static در PHP چیست؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">استاتیک در PHP به معنای ایجاد متغیرها و متدها که به
آنها بدون نیاز به ایجاد یک نمونه از کلاس دسترسی داریم، میباشد. این امکان به ما میدهد تا به متغیرها
و متدهای کلاسها به صورت مستقیم از خود کلاس دسترسی داشته باشیم.</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۴:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">XSS (Cross-Site Scripting) چیست؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">XSS یک نوع حمله امنیتی است که هکرها از طریق درج کد
اسکریپت در صفحات وب، اطلاعات کاربران را دزدیده یا مخرب کنند. این حمله معمولاً با درج کد اسکریپتی که
از طریق ورودیهای کاربر به وبسایت اجرا میشود، صورت میگیرد.</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۵:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">چگونه از XSS جلوگیری کنیم؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">برای جلوگیری از XSS، باید ورودیهای کاربر را به
درستی اعتبارسنجی کنید تا از درج کد اسکریپت مخرب جلوگیری شود. همچنین، استفاده از توابع امن مانند
htmlspecialchars برای نمایش دادههای ورودی از اهمیت بالایی برخوردار است.</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۶:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">تفاوت بین سشن و کوکی چیست و امنیت کدام بهتر است؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">
کوکی (Cookies): کوکیها اطلاعاتی هستند که مرورگر به سرور ارسال میکند و از آن برای احراز هویت و
ذخیره اطلاعات در مرورگر استفاده میشود. کوکیها معمولاً در سمت کاربر ذخیره میشوند و از لحاظ امنیتی
کمی ضعیفتر از سشن هستند.
<br>
سشن (Session): سشنها همانند کوکیها اطلاعات را ذخیره میکنند، اما در سمت سرور. این اطلاعات توسط
سرور برای هر کاربر جداگانه مدیریت میشود و به صورت پیشفرض از لحاظ امنیتی قویتر از کوکیها هستند.
<br>
امنیت: از نظر امنیتی، سشن بهتر است زیرا اطلاعات در سمت سرور ذخیره میشوند و توسط کاربر قابل دسترسی
نیستند. اما برای استفاده از سشن، نیاز به فضای ذخیرهسازی در سرور دارید و همچنین باید مطمئن شوید که
توکن سشن به درستی مدیریت میشود تا از حملات مخرب مانند Session Hijacking جلوگیری شود.
</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۷:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">در PHP، برای بهینهسازی عملکرد در پردازش دادههای حجیم و
انجام عملیاتهای پیچیده، از چه تکنیکها و روشهایی میتوانید استفاده کنید؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">
استفاده از کش (Caching): کش کردن نتایج محاسبات پرهزینه یا دادههای ثابت میتواند به کاهش بار روی
سرور و زمان بارگذاری صفحه کمک کند. نمونههایی از کشها شامل کش فایل، کش دادههای پایگاه داده، و کش
اپلیکیشن است.
<br>
پیشپردازش دادهها: پیشپردازش و تقسیم دادهها به قطعات کوچکتر میتواند به بهینهسازی عملکرد کمک
کند. این شامل استفاده از تکنیکهایی مانند صفحهبندی (pagination) و بارگذاری تنبل (lazy loading) است.
<br>
استفاده از ابزارهای پروفایلینگ: استفاده از ابزارهایی مانند Xdebug برای شناسایی گلوگاههای عملکردی و
بررسی اینکه کدام قسمتهای کد بیشترین زمان را صرف میکنند.
<br>
بهینهسازی کوئریهای پایگاه داده: نوشتن کوئریهای بهینه و استفاده از ایندکسها میتواند به بهبود
سرعت دسترسی به دادهها کمک کند. همچنین، استفاده از تکنیکهای مانند JOIN به جای چندین کوئری SELECT
میتواند مؤثر باشد.
</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۸:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">توضیح دهید چگونه میتوانید از "Dependency Injection" در PHP
استفاده کنید و مزایای آن چیست؟ همچنین، چطور میتوانید با استفاده از یک Container برای مدیریت وابستگیها
پیادهسازی کنید؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">
Dependency Injection (DI) روشی است برای ارائه وابستگیها به یک شیء از خارج به جای این که شیء خودش
آنها را ایجاد کند. این روش به بهبود قابلیت تست، کاهش وابستگیها و بهبود نگهداری کد کمک میکند.
<br>
در PHP، DI میتواند با استفاده از Containerهایی مانند Symfony’s DependencyInjection Component یا
Laravel’s Service Container پیادهسازی شود.
<br>
Container به مدیریت و تزریق وابستگیها کمک میکند، به این صورت که وابستگیها به طور خودکار به
کلاسهای مورد نظر تحویل داده میشوند. این امر باعث کاهش پیچیدگی کد و تسهیل تستپذیری میشود.
</p>
</div>
</div>
<div class="mb-10">
<h2 class="text-2xl font-semibold mb-3 text-indigo-600 text-right">سوال ۹:</h2>
<p class="mb-4 text-lg text-gray-700 text-right">در PHP، "Object-Oriented Programming (OOP)" چه ویژگیها و
اصولی دارد که برای طراحی و ساخت نرمافزارهای مقیاسپذیر و قابل نگهداری ضروری است؟</p>
<div class="bg-white shadow-md p-6 rounded-lg border border-gray-200">
<p class="text-gray-800 leading-relaxed text-right">
OOP در PHP شامل ویژگیهایی مانند Encapsulation (کپسولهسازی)، Inheritance (وراثت)، Polymorphism
(چندریختی) و Abstraction (ابستگی) است.
<br>
Encapsulation به محافظت از دادهها و پیادهسازی منطق کسبوکار از طریق private و protected تعریف کردن
ویژگیها و متدها کمک میکند.
<br>
Inheritance امکان استفاده مجدد از کد را فراهم میکند و به توسعهدهندگان این اجازه را میدهد تا
کلاسهای جدید را بر اساس کلاسهای موجود ایجاد کنند.
<br>
Polymorphism به اجرای یک متد به روشهای مختلف در کلاسهای مختلف کمک میکند، که موجب انعطافپذیری
بیشتر میشود.
<br>
Abstraction به تعریف رابطهای عمومی برای استفاده از ویژگیهای کلیدی یک کلاس بدون نیاز به دانستن
جزئیات داخلی آن کمک میکند.
</p>
</div>
</div>
</div>
</body>
</html>