Mi è stato affidato il compito di aiutare il nostro reparto risorse umane a creare nuove domande di intervista per i candidati candidati a posizioni di sviluppo. Come parte del processo, vorrei valutare la loro capacità di capire entrambi il codice senza l'aiuto di un compilatore e individuare potenziali problemi futuri.
Come tale, ho ideato un'applicazione di console di base. Il codice sorgente che fornirò ai candidati e porterò loro le seguenti domande:
- Would this code compile without any errors? If not, why not?
- Can you spot any potential issues in the code which might cause bugs in future?
- What improvements would you make to the code?
Ho le mie risposte alle domande, ma mi piacerebbe ricevere un feedback per vedere se c'è qualcosa che potrei aver perso.
using System;
using System.Collections.Generic;
namespace DeveloperTest
{
class Program
{
static void Main(string[] args)
{
var users = new List<User>();
users.Add(new User("John Smith", "42", DateTime.Today));
string name = "Jane Smith";
int age = 37;
int yearJoined = 17;
int monthJoined = 01;
int dayJoined = 15;
users.Add(new User()
{
Name = name,
Age = age,
DateJoined = new DateTime(day: dayJoined, month: monthJoined, year: yearJoined)
});
users[0].PrintUserInfo();
RemoveUsersUnderAge(users, 40);
Console.ReadKey();
}
private void RemoveUsersUnderAge(List<User> users, int age)
{
foreach (var user in users)
{
if (user.Age < age)
{
users.Remove(user);
}
}
}
}
class User
{
private string _name;
private int _age;
private DateTime _dateJoined;
public User()
{
}
public User(string name, string age, DateTime dateJoined)
{
if (name == null) Name = "Unknown";
if (age == null) Age = 0;
if (dateJoined == null) DateJoined = DateTime.Today;
Name = name;
Age = Convert.ToInt32(age);
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public int Age
{
get { return _age; }
set { _age = value; }
}
public DateTime DateJoined
{
get { return _dateJoined; }
set { _dateJoined = value; }
}
private void PrintUserInfo()
{
Console.WriteLine($"Name: {this.Name}.");
Console.WriteLine($"Age: {this.Age} years old.");
Console.WriteLine($"Joined: {this.DateJoined}.");
}
}
}