Тех собес на middle-senior C# Разработчик в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований в категории C# Разработчик

Посмотреть видео в категории

(2024-09-04)

Задача 1: C# Code Review

Прилетел код на ревью, какие комменты оставишь?

using System;
using System.Collections.Generic;
using System.Linq;

var logger = new Logger(new ConsoleLogger());
logger.Log("Log","LogLine1");
logger.Log("Log","LogLine2");
logger.Log(new ArgumentException("AAA!"));
logger.Flush();


interface IInternalLogger{
    void Log(string s);
}

class ConsoleLogger: IInternalLogger{
    public void Log(string s){
        Console.WriteLine(s);
    }
}


class Logger
{
    public Dictionary<string,string> buffer = new Dictionary<string,string>();

    public IInternalLogger internalLogger = null!;

    public Logger(IInternalLogger loggerImpl){
        internalLogger = loggerImpl;
    }

    public void Log(string key, string value){
        lock(buffer){
            if (buffer.Count() > 1024){
                throw new Exception("log overflow");
            }
            if(!buffer.ContainsKey(key))
                buffer.Add(key,value);
            else buffer[key] += "; " + value;
        }
    }

    public void Log(Exception e) => Log("Exception", e.GetType()+ " : " + e.Message);

    public void Flush(){
        var logString = ConvertToString(buffer.Select(x => x.Key + ":" + x.Value).ToList());
        internalLogger.Log(logString);
        buffer.Clear();
    }

    public  string ConvertToString(IList<string> list){
        string logString = "";
        for(int i = 0; i < buffer.Count(); ++i){
            logString = logString + list[i]+ "n";
        }
        return logString;
    }
}

Задача 2: SQL

create table gifts (clan text, user_from text, user_to text);

INSERT INTO gifts (clan, user_from, user_to) values ('ru','vasia','kolya');
INSERT INTO gifts (clan, user_from, user_to) values ('ru','kolya','misha');
INSERT INTO gifts (clan, user_from, user_to) values ('usa','mike','jon');
INSERT INTO gifts (clan, user_from, user_to) values ('usa','mike','ken');
INSERT INTO gifts (clan, user_from, user_to) values ('usa','ken','barbie');  
INSERT INTO gifts (clan, user_from, user_to) values ('china','csi','li');
INSERT INTO gifts (clan, user_from, user_to) values ('usa','csi','one');
INSERT INTO gifts (clan, user_from, user_to) values ('usa','csi','xhuy');

используя 1 зарос для каждой задачи надо:

  1. найти клан где подарили больше всего подарков
  2. найти 2 клана где больше всего уникальных получаетелей и имя подарившего больше всего подарков
  3. найти 2 клана где больше всего уникальных получаетелей и имена 2х подаривших больше всего подарков