2024-2025 Web Programlama-2 final sınavı; ASP.NET Core MVC mimarisi, Entity Framework Core ile veri tabanı yönetimi, Model doğrulama yöntemleri, LINQ sorguları ve RESTful API standartları üzerine yoğunlaşmıştır. Bu özet, sınavda karşılaşılan temel teknik detayları ve kod yapılarını kapsamaktadır.
1. ASP.NET Core MVC Temelleri
2. Entity Framework Core ve Veri Tabanı
3. Model Doğrulama (Validation) ve Güvenlik
4. RESTful API ve LINQ Sorguları
Web Programlama-2 2024-2025 Final Soruları
Web Programlama-2 2024-2025 Final Soruları
20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Asp.Net Core MVC’de SQL Server veri tabanı yönetim sisteminin EF Core ile birlikte kullanılacağı varsayıldığında, proje oluşturulduktan sonra projeye SQL Server’a ait aşağıdaki hangi veri sağlayıcısı eklenmelidir?
ADoğru cevap
Açıklama
Entity Framework Core ile SQL Server kullanabilmek için Microsoft tarafından sağlanan resmi NuGet paketi Microsoft.EntityFrameworkCore.SqlServer’dır. InMemory testi için, diğerleri ise geçerli olmayan veya eski isimlendirmelerdir.
Soru 2
public DateTime KayitTarihi { get; set; }
şeklinde tanımlı bir model elemanının tag helper ile kullanım biçimi aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
ASP.NET Core’da bir input elementini modeldeki bir property’e bağlamak için asp-for Tag Helper’ı kullanılır. Bu, otomatik olarak `id`, `name` ve uygun `type` özelliklerini oluşturur.
Soru 3
Bir ASP.NET Core MVC uygulaması için varsayılan olarak oluşturulan layout aşağıdaki seçeneklerden hangisinde doğru olarak verilmiştir?
BDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması
ASP.NET Core MVC projelerinde varsayılan layout dosyası Views/Shared/_Layout.cshtml'dir. Başındaki alt çizgi, dosyanın doğrudan çağrılan bir view değil paylaşılan bir parça olduğunu belirtir. .cshtml uzantısı Razor görünüm dosyalarını, .cs ise C# kod dosyalarını gösterir.
Soru 4
Sunucu taraflı Web frameworkler (çerçeveleri) ile ilgili olarak aşağıdaki seçeneklerden hangisi yanlıştır?
ADoğru cevap
Açıklama
Web frameworkler (ASP.NET Core, Django vb.) geliştirme sürecini hızlandırır ve standartlaştırır ancak zorunlu değildirler. Saf (native) kod yazılarak da web programlama yapılabilir; bu nedenle A şıkkı yanlıştır.
Soru 5
Asp.Net Core MVC’de oluşturulan bir web APP’ye ait http://localhost/api/Personel/ adresine bir Http Get metodu isteği gönderildiğini varsayalım. Bu durumda RESTful mimarisine göre hangi işlemin yapılması beklenir?
EDoğru cevap
Açıklama
RESTful mimaride GET metodunun amacı veri okumaktır. Eğer bir ID belirtilmeden ana kaynağa (Personel/) GET isteği atılırsa, beklenen davranış o kaynağa ait tüm listeyi (Personel Listesi) döndürmesidir.
Soru 6
Form tag helper’ı ile siteler arası istek sahteciliği (CSRF) saldırısını önlemek için kullanılan özellik aşağıdakilerden hangisidir?
DDoğru cevap
Açıklama
CSRF (Cross-Site Request Forgery) saldırılarını önlemek için formlarda doğrulama jetonu (token) kullanılır. ASP.NET Core’da bu özelliği asp-antiforgery=”true” niteliği ile kontrol edebiliriz.
Soru 7
Asp.Net Core uygulamalarında modele ait özellik değerinin mail adresine uygunluğunu denetleyen öznitelik aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Data Annotations kütüphanesinde, bir string alanın geçerli bir e-posta formatında olup olmadığını kontrol eden doğrulama (validation) özniteliği [EmailAddress]’tir.
Soru 8
var context = new KitapContext()
context.Add(new Kitap() { KitapAd = “Budala”, Yazar = “Dostoyevsky” });
context.SaveChanges();
Yukarıdaki kod çalıştırıldığında veri tabanında aşağıdaki işlemlerden hangisi gerçekleşir?
CDoğru cevap
Açıklama
Entity Framework Core’da context.Add() metodu yeni bir kaydı veritabanına eklemek üzere işaretler. SaveChanges() çağrıldığında bu işlem SQL’deki INSERT komutuna dönüştürülerek veritabanına ekleme yapılır.
Soru 9
Bir Asp.Net Core MVC uygulamasında model doğrulamanın sunucu tarafında gerçekleşmesi için aşağıdaki hangi nesneye ait özellik true (doğru) olmalıdır?
ADoğru cevap
Açıklama
Sunucu tarafında modelin kurallara (Data Annotations) uyup uymadığını kontrol etmek için Controller içerisinde ModelState.IsValid özelliği kontrol edilir. Eğer true ise veriler geçerlidir.
Soru 10
Yukarıda yer alan Index() action metodu çağrıldığında ekrana hangi sayı basılır?
ADoğru cevap
Açıklama
Kodda x yüzde 3 == 0 şartını sağlayan ilk eleman aranmaktadır. Dizinin ilk elemanı olan 0, 3’e tam bölünür (kalan 0’dır). FirstOrDefault metodu şartı sağlayan ilk değeri döndürdüğü için cevap 0’dır. (3 de bölünür ama ilk sırada 0 vardır).
Soru 11
Bir Asp.Net Core MVC uygulamasında migration oluşturduktan sonra migration işlemini yürütmek (veritabanına uygulamak) için Package Manager Console Ekranı’nda aşağıdaki hangi komut çalıştırılmalıdır?
CDoğru cevap
Açıklama
Migration oluşturmak için Add-Migration kullanılırken, oluşturulan bu migration dosyalarını veritabanına fiziksel olarak yansıtmak/uygulamak için Update-Database komutu kullanılır.
Soru 12
[Range(5, 10)]
public int Deger { get; set; }
Bir Asp.Net Core MVC uygulamasında bir model içerisinde yukarıdaki gibi tanımlı [Range(5, 10)] özniteliği ile Deger özelliği için nasıl bir kısıtlama sağlanmış olur?
EDoğru cevap
Açıklama
[Range(min, max)] özniteliği, sayısal bir alanın alabileceği değer aralığını belirler. Karakter uzunluğu için [StringLength] kullanılır. Bu durumda girilen sayısal değerin 5 ile 10 arasında (sınırlar dahil) olması gerekir.
Soru 13
Cookie’ler ile aşağıdaki bilgilerin hangisini tutmak en uygun olur?
BDoğru cevap
Açıklama
Cookie’ler (Çerezler) istemci tarafında (tarayıcıda) saklanır ve güvenlik açısından hassas verilerin (şifre, veritabanı bilgisi vb.) burada tutulması risklidir. Kullanıcı renk tercihleri, dil seçimi gibi hassas olmayan kişiselleştirme ayarları cookie’lerde saklamak için en uygun verilerdir.
Soru 14
Asp.Net Core Rest Api mimarisinde bir kaydı güncellemek istediğimizde bu isteğe yanıt veren metot aşağıdaki hangi öznitelik ile belirtilmelidir?
EDoğru cevap
Açıklama
RESTful standartlarında; veri okumak için GET, eklemek için POST, silmek için DELETE ve güncellemek için PUT (veya kısmi güncelleme için PATCH) metodları kullanılır.
Soru 15
var sonuc = from x in Personel
where x.PersonelNo > 10
select x;
Yukarıda yer alan kod bloğu Asp.Net Core uygulamalarında hangi sözdizimi yapısına uygundur?
DDoğru cevap
Açıklama
LINQ (Language Integrated Query) sorguları iki şekilde yazılabilir. SQL benzeri from … where … select yapısı Query Syntax (Sorgu Sözdizimi) olarak adlandırılır. Metot zincirleme (Personel.Where(…)) yapısı ise Method Syntax’tır.
Soru 16
Asp.Net Core MVC uygulamalarında bir model içerisinde kullanılan Display özelliği hangi tag helper ile kullanılır?
EDoğru cevap
Açıklama
Model property’leri üzerine eklenen [Display(Name=”Adı”)] gibi öznitelikler, View tarafında tag helper’ı kullanıldığında ekranda etiket ismi olarak görünür.
Soru 17
Asp.Net Core uygulamalarında kullanılan [ApiController] özniteliği için aşağıdakilerden hangisi doğrudur?
BDoğru cevap
Açıklama
[ApiController] özniteliği, API geliştirmeyi kolaylaştıran birtakım özellikler ekler. Bunlar arasında otomatik model doğrulama (bad request dönüşü), binding source inference (verinin nereden geleceğini otomatik algılama) gibi yetenekler bulunur.
Soru 18
Yukarıdaki kod çalıştırıldığında sonuc değişkenindeki değer ne olur?
DDoğru cevap
Açıklama
All() metodu, listedeki tüm elemanların belirtilen şartı sağlayıp sağlamadığını kontrol eder. Şart: Sayfa sayısı 50’den büyük VE 95’ten küçük olmalı. Ancak listedeki 4. kitap (40 sayfa) ve 5. kitap (30 sayfa) bu şartı (50’den büyük olma) sağlamadığı için sonuç false döner.
Soru 19
Yukarıdaki sınıf form elemanlarına model bağlama ile bağlanmak istendiğinde form nasıl tanımlanabilir?
CDoğru cevap
Açıklama
Model Binding (Model Bağlama) işleminde, form elemanlarının name öznitelikleri, model sınıfındaki property (özellik) isimleriyle birebir eşleşmelidir. Sınıfta özellikler PerBirim ve PerNo olduğu için input name’leri de aynı olmalıdır.
Soru 20
Bir Model sınıfı tanımlanmak istendiğinde bu sınıfın uzantısı aşağıdakilerden hangisi olabilir?
DDoğru cevap
Açıklama
ASP.NET Core uygulamaları C# dili ile yazılır. Model sınıfları da normal C# sınıfları olduğu için dosya uzantıları .cs (CSharp) olur.