[Góc phỏng vấn] Thử sức với bài test phỏng vấn
Chào các bạn!
Tình hình là tuần vừa rồi mình vừa đi pv tại một cty. Sau buổi pv thì mình có nhận được 1 bài test đại loại như sau:
Cho 1 đoạn text đã bị mã hóa, các bạn tìm cách để giải mã và tìm ra đoạn văn bản gốc.
Ko có yêu cầu hay giới hạn gì đặc biệt, các bạn có thể dùng mọi ngôn ngữ, hay là tool hỗ trợ chỉ cần miêu tả lại cách giải quyết vấn đề, source code kèm theo nếu có và quan trọng là đáp án của bài toán.
Bài test đưa ra một gợi ý là họ dùng trang này để mã hóa đoạn văn bản gốc
https://applyatappsfactory.azurewebsites.net/Test/Encode
Nếu các bạn có thời gian thì vào thảo luận cho vui nhé
Và đây là đoạn văn đã bị mã hóa.
677B783356C28575407A7C6B5E1D1D5D597B426B6B336A59757D5E426B5E33C289596B335A5978777B781D6A7B593AC28633C2857CC2877C6B5E33C28659337542777833C28A7B78C2857833C28A7C6BC287C286337F7559C28A33C28A7C75C287331D4477337CC28633777B78337D42777B78C285335EC28542C286547C6B5E337B7CC28633C2887B7C75C2874E331D5B78337B5975C287C28633777B78337F59C28C3378607FC28542C28878C287337C6B337B7CC2863342C285603F331D5B7833C2887542C28654C286337B7C6033C2866B765E75C28C3F337B78337E787854C286337B7C6033C28A42C28560411D1D35C280C28C33C286596B3F33C28A7BC28C33C28859C28978C28533C28C5976C285337D42C28878337C6B33C28676C2887B337D7842C2855235331D356C597633C286787833777B783378757D407E7C6B5E3F337D42777B78C28552331D5B783AC286336B7842C2854D33677B78337E7C6B5E33597D33777B78337875C28978C28633C28A7C777B33C288C28559C28A6B33426BC2873377C285427C6B4D35331D35C280C28C33C286596B3F33777B7833607CC28677337CC28633596B33777B78335475427C6B41351D1D3A65C28A787877337542C2873F335933C28859607833426BC2873379597C6B3360783F33C287594D331D6576C2887B3354C285787777C28C335E426078C286334433C28A7C757533547542C28C33C28A7C777B33C28C59764E331D626B33777B7833C2867B59C28578335E42C28C337D7559C28A78C285C28633777B787CC28533C288597559C28533766B7D5975C2873F331DC280C28C336059777B78C285337B42C2863360426BC28C335E42C28560786B77C28633597D335E5975C287413A1D1D35C280C28C337D42777B78C2853F3360C28C337D42777B78C2853F33426BC28733C288426B33C28C5976336B5977337B7842C285331D677B783354C28559607CC2867833777B783378757D407E7C6B5E337FC2857842777B78C286337C6B3360C28C337842C2855235331D35557833C2884275603F33C2867742C28C33C2884275603F3360C28C33C2887B7C75C2873F33757C78337559C28A34331D446B33C28A7C777B78C28578C28733757842C28978C28633777B78336B7C5E7B7740C28A7C6BC287C286337F7559C28A41351D1D3A6A7C757533C28C59763F33C286C28A787877337542C2873F33C288596078334275596B5E33C28A7C777B33607852331DC280C28C33C28742765E7B7778C285C28633C2867B42757533C28842C28578337D59C28533C28C59763377786BC28778C28575C28C4E331D446B33777B78336B7C5E7B773360C28C33C28742765E7B7778C285C28633777B787CC28533C28578C2897875C285C28C337E7878543F331D677B78C28C3A757533C28559C2887E33C28C597633426BC28733C287426BC2887833C28C597633426BC28733C2867C6B5E33C28C597633775933C28675787854413A1D1D35C280C28C337D42777B78C2853F3360C28C337D42777B78C2853F335933C288426B33C28C5976336B59773377C28542C28878331D677B783378757D407E7C6B5E3AC28633C28742765E7B7778C285C286337C6B33777B4277335E75595960C28C33547542C288785235331D35C280C28C33C286596B3F3360C28C33C286596B3F334433C2867878337C7733C288757842C285331D5B59C28A335EC28578C28C33777B7833426BC2887C786B7733C28A7C757559C28AC286334254547842C28541351D1D3A44337559C2897833C28C59763F33C28C5976C28533C288596078757C6B78C286C28633C2887B42C28560C2863360783F3360C28C337F59C28C4D331DC2836BC287337C7D33C28C59763AC28578336B597733C28A7C75757C6B5E3F3360C28C337D59C285C2887833443A7575337860547559C28C413A331D356159C28A337D42777B78C2853F336B59C28A337D42777B78C2853F337B783AC28633C286787CC3977C6B5E3360C28C3342C2856041331D56757D407E7C6B5E337B42C28633C287596B78336078334233C288C285767875337B42C2856041351D1D677B78337D42777B78C28533C2867B76C287C28778C285C2863F337B7CC28633C2857CC28778337CC28633C28A7C75C2873F331D446B337B7CC2863342C28560C286337B783AC286337B5975C2877C6B5E33777B78335EC28559426B7C6B5E33C2887B7C75C2873F331D667842C2887B78C28633777B7833C2885976C2857733C28A7C777B3377597C7533426BC28733C287C2857842C287413340331D677B7833C2887B7C75C287337B78337B7875C287337C6B337B7CC2863342C28560C28633C28A42C28633C2877842C287411D1D404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040401D1D587BC48DC2883360E1BBBE6B5E337FE1BAB46B33C4A4C3B6335E7CE1BAB67C33C28476C28CE1BB927733C4A4C783E1BBB6C28833C288C3B57633C4A4E1BBA4413355C3B5C28C335E7CE1BBB033777BC3BF33C2847642C28C3377C285E1BBB23375E1BAB47C33C28742C28C6B7B42767B59C28833C289C3B333777BE1BAB659337576E1BB806B33C289E1BB941DC288C3B4C2887B3375C3B36033C288E1BBBA42337FE1BAB46B336BC3B35941
Test input aaaaaa -> ra 424242424242
Vậy đoán được là nó thay thế a = 0x42
Bây giờ đơn giản nhất thì cứ việc in hết bảng chữ cái ra. Bỏ vô input và sinh ra output là được map table. Từ đó decode là ra. :3
Và kq là một bài thơ. Có đoạn text của bạn chèn vào bằng unicode nên bị trống vài chỗ
</https://pastebin.com/9DKwKKpY>
Như vậy thì tù quá …
Công nhận tù thật :3
Nhưng mình thử tìm quy luật thì có vẻ nó dạng map 1-1 nên thôi đành tạm bợ vậy
Code của mình: https://pastebin.com/9DKwKKpY
Hóng cách giải hay hơn OvOb
Quy luật tác giả đưa ra khá là “lung tung”, mò mẫm khá mất thời gian
Khi sort theo mã:
Về cơ bản, các kí tự trong bảng chữ cái tiếng Anh được sắp xếp rất hỗn độn, hoa thường lẫn lộn.
[spoiler]Cái hay của tác giả là khiến người ta tưởng như có quy luật rồi nhưng mà cuối cùng phát hiện ra là chẳng có gì cả :v[/spoiler]
Cách này thì đúng kiểu KISS
Gợi ý tí là có map 1-1 và letter swap (kiểu C thành E và ngược lại )
Cảm ơn bạn nha. Mình decode xong đoạn kia rồi, giờ mình đang ngồi mò mẫm quy luật đây.
Tác giả “ác” quá