บททดสอบการเขียนโปรแกรมภาษา C # ที่น่ากลัว - คำแนะนำใด ๆ ? [ปิด]


21

ฉันมีงาน C # dev ที่เป็นไปได้ แต่ก่อนที่ฉันจะสัมภาษณ์ฉันต้องผ่านการทดสอบกับ บริษัท จัดหางาน

แม้ว่าฉันจะเป็นนักพัฒนาอาวุโสที่มีประสบการณ์การเขียนโปรแกรมมากกว่า 10 ปีและมากกว่า 3 ปีกับ c # ฉันไม่ได้รอการทดสอบนี้และฉันคิดว่ามีโอกาสที่ดีที่ฉันจะล้มเหลว

จากประสบการณ์ของฉันการทดสอบเหล่านี้ไม่สามารถคาดเดาได้ว่าจะถามคุณถึงสิ่งที่คุณไม่ค่อยได้ใช้ในสถานการณ์การทำงานประจำวัน

ฉันต้องการคำแนะนำที่ดีที่สุดของคุณเกี่ยวกับสิ่งที่ฉันควรจะแก้ไขใน - ตัวอย่างเช่นหนังสือหรือเว็บไซต์ที่ดี ฉันมีเวลาน้อยกว่า 1 สัปดาห์ในการเตรียมตัวและมันเป็นสิ่งสำคัญที่ฉันต้องผ่านสิ่งนี้

ขอบคุณล่วงหน้า.

แก้ไข: เพื่อพิสูจน์ความกังวลของฉันเพิ่มเติมจากการเขียนการทดสอบดังกล่าว - พิจารณาคำถามต่อไปนี้:

12) เหตุการณ์คือ:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

คำตอบที่ถูกต้องตามการทดสอบคือ A แต่เนื่องจากฉันได้ทำการพัฒนา SOA (บ่อยครั้งที่เหตุการณ์จะขึ้นอยู่กับเหตุการณ์ของระบบ (ไม่ใช่การกระทำของผู้ใช้) ฉันแน่ใจ 100% ว่ากิจกรรมไม่ต้องถูกขับเคลื่อน การกระทำของผู้ใช้นี่เป็นคำถาม C # (ไม่ใช่คำถาม ASP.net) จากความเข้าใจของฉันฉันไม่สามารถหาคำตอบที่ถูกต้องได้จริง แต่ B ดูเหมือนจะดีที่สุดในล็อตนี้ (ถ้านิยามของปาร์ตี้คือ: ใด ๆ เอนทิตีที่สามารถทำให้เกิดเหตุการณ์คำถามประเภทนี้ทำให้ฉันตกใจ


4
หากคุณเป็น 'นักพัฒนาอาวุโส' และคุณใช้ C # แบบวันต่อวันเป็นเวลาสามปีคุณควรจะโอเค การทดสอบเหล่านี้มีขึ้นเพื่อกำจัดผู้ที่ไม่รู้ภาษาหรือการใช้งาน หากคุณใช้มันแบบวันต่อวันเป็นเวลา 3 ปีคุณควรพบกับข้อผิดพลาดเกือบทั้งหมดในการทดสอบที่ให้มา
George Stocker

11
@GeorgeStocker - จริง ๆ แล้วฉันต้องทำการทดสอบเหล่านี้ (โดยมุ่งไปที่กรอบงาน. NET แบบเต็ม) และพวกเขาก็มีรายละเอียดมาก ฉันพบว่ามันค่อนข้างยากเพราะก่อนอื่นพวกเขาเข้าไปในส่วนต่าง ๆ ของเฟรมเวิร์ก (เช่น WCF) ซึ่งฉันไม่ได้มีประสบการณ์มากรวมทั้งคุณต้องรู้จักสิ่งต่าง ๆ เช่นตัวเลือกการกำหนดค่าที่คุณจะใช้ในไฟล์. config ตัวเลือกปิดบังบางอย่าง มันเป็นสิ่งที่คุณไม่ค่อยจะจดจำเพราะคุณอาจเคยใช้เพียงครั้งเดียวและ Google ในตอนนั้น ฉันพบว่าประสบการณ์ที่น่าผิดหวังเล็กน้อย
Scott Whitlock

7
โอ้และหนึ่งในคำถามที่ฉันทำผิดคือ "ใน VB.NET คำหลักที่ใช้ในการประกาศโครงสร้างคืออะไร?) a) โครงสร้าง b) โครงสร้าง c) โครงสร้าง d) โครงสร้าง" ฉันคิดว่า "Intellisense รู้เรื่องนี้ดังนั้นฉันไม่จำเป็นต้องทำ!" แน่นอนว่าคำตอบนั้นถูกเก็บไว้ในความทรงจำของฉัน
Scott Whitlock

17
@ScottWhitlock: ไม่มีวิธีใดที่คุณสามารถเตรียมตัวอย่างเพียงพอสำหรับการสัมภาษณ์ที่ออกแบบมาไม่ดี ในบางจุดคุณต้องเชื่อมั่นว่าพวกเขามีความสามารถเพียงพอที่จะถามและตัดสินตามพื้นที่ที่คุณอ้างว่ามีความเชี่ยวชาญเช่นเดียวกับความสามารถด้านแนวคิด หากพวกเขาไม่ได้แล้วคุณอาจมีเวลาที่น่าสังเวชสำหรับพวกเขาต่อไป
Aaronaught

2
นี่เป็นการทดสอบภาษา C # หรือการทดสอบ. NET Framework หรือไม่
มด

คำตอบ:


24

ค่อนข้างเก่า แต่อาจมีการโพสต์บล็อกนี้มีประโยชน์สำหรับคุณ: นักพัฒนา. NET ที่ดีต้องรู้ (คำถามสัมภาษณ์. NET เพิ่มเติม)

ทุกคนที่เขียนรหัส

  • อธิบายความแตกต่างระหว่างเธรดและกระบวนการได้หรือไม่?
  • Windows Service คืออะไรและวงจรชีวิตของบริการแตกต่างจาก EXE "มาตรฐาน" อย่างไร
  • จำนวนหน่วยความจำสูงสุดที่กระบวนการใด ๆ บน Windows สามารถทำได้คือเท่าไร สิ่งนี้แตกต่างจากหน่วยความจำเสมือนสูงสุดสำหรับระบบหรือไม่? สิ่งนี้จะส่งผลกระทบต่อการออกแบบระบบอย่างไร
  • EXE และ DLL ต่างกันอย่างไร
  • การพิมพ์ที่แข็งแกร่งกับการพิมพ์ที่อ่อนแอคืออะไร ข้อไหนดี? ทำไม?
  • ผลิตภัณฑ์ของ Corillian คือ "Component Container" ตั้งชื่อคอนเทนเนอร์อย่างน้อย 3 ส่วนที่มาพร้อมกับ Windows Server Family
  • PID คืออะไร มันจะมีประโยชน์อย่างไรเมื่อแก้ไขปัญหาระบบ?
  • มีกี่กระบวนการที่สามารถฟังบนพอร์ต TCP / IP เดียว
  • GAC คืออะไร มันแก้ปัญหาอะไรได้บ้าง?

นักพัฒนา. NET ระดับกลาง

  • อธิบายความแตกต่างระหว่างการเขียนโปรแกรมเชิงอินเตอร์เฟส, เชิงวัตถุและมุมมองเชิงวัตถุ
  • อธิบายว่าอินเทอร์เฟซคืออะไรและแตกต่างจากคลาสอย่างไร
  • ภาพสะท้อนคืออะไร
  • อะไรคือความแตกต่างระหว่าง XML Web Services ที่ใช้ ASMX และ. NET Remoting โดยใช้ SOAP
  • ระบบประเภทแสดงโดย XmlSchema และ CLS isomorphic หรือไม่
  • ตามหลักการแล้วอะไรคือความแตกต่างระหว่างการผูก แต่เนิ่นๆและการผูกปลาย?
  • ใช้แอสเซมบลีโหลดการอ้างอิงแบบคงที่หรือการอ้างอิงแบบไดนามิกหรือไม่
  • เมื่อใดจึงควรใช้ Assembly.LoadFrom หรือ Assembly.LoadFile
  • ชื่อที่ผ่านการรับรอง Asssembly คืออะไร? มันเป็นชื่อไฟล์หรือไม่? แตกต่างกันอย่างไร
  • ถูกต้องหรือไม่ Assembly.Load ( "foo.dll");
  • แอสเซมบลีที่ตั้งชื่ออย่างรุนแรงต่างจากที่ไม่มีชื่ออย่างยิ่งอย่างไร
  • DateTimes สามารถเป็นโมฆะได้หรือไม่
  • JIT คืออะไร NGEN คืออะไร ข้อ จำกัด และประโยชน์ของแต่ละข้อคืออะไร
  • ตัวรวบรวมขยะทั่วไปใน. NET CLR จัดการอายุการใช้งานของวัตถุอย่างไร การสรุปที่ไม่ได้กำหนดไว้คืออะไร?
  • ความแตกต่างระหว่าง Finalize () และ Dispose () คืออะไร?
  • รูปแบบการใช้ () มีประโยชน์อย่างไร IDisposable คืออะไร มันสนับสนุนการสรุปที่แน่นอนได้อย่างไร
  • บรรทัดคำสั่งที่มีประโยชน์นี้ทำอะไรได้บ้าง tasklist / m "mscor *"
  • อะไรคือความแตกต่างระหว่าง in-proc และ out-of-proc
  • เทคโนโลยีใดที่ทำให้สามารถสื่อสารนอกระบบได้ใน. NET
  • เมื่อคุณใช้งานส่วนประกอบภายใน ASP.NET กระบวนการใดที่ทำงานภายใน Windows XP Windows 2000 Windows 2003?

นักพัฒนาอาวุโส / สถาปนิก

  • เกิดอะไรขึ้นกับบรรทัดแบบนี้ DateTime.Parse (myString);
  • PDB คืออะไร พวกเขาจะต้องอยู่ที่ไหนเพื่อให้การดีบักทำงาน
  • ความซับซ้อนของวัฏจักรคืออะไรและทำไมจึงสำคัญ?
  • เขียนล็อคมาตรฐาน () บวก“ ตรวจสอบอีกครั้ง” เพื่อสร้างส่วนที่สำคัญรอบ ๆ การเข้าถึงตัวแปร
  • FullTrust คืออะไร ชุดประกอบ GAC'ed มี FullTrust หรือไม่
  • โค้ดของคุณจะได้รับประโยชน์อะไรบ้างหากคุณตกแต่งด้วยแอททริบิวที่ต้องการสิทธิ์ด้านความปลอดภัยโดยเฉพาะ
  • สิ่งนี้ทำอะไร gacutil / l | พบ / ฉัน "Corillian"
  • สิ่งนี้ทำอะไร sn -t foo.dll
  • พอร์ตใดที่จะต้องเปิดสำหรับ DCOM ผ่านไฟร์วอลล์ จุดประสงค์ของพอร์ต 135 คืออะไร
  • ตัดกัน OOP และ SOA แต่ละหลักคืออะไร
  • XmlSerializer ทำงานอย่างไร กระบวนการ ACL ต้องการสิทธิ์ใดบ้าง
  • เหตุใดการจับ (ข้อยกเว้น) จึงเป็นความคิดที่เลว
  • Debug.Write และ Trace.Write แตกต่างกันอย่างไร ควรใช้แต่ละครั้งเมื่อใด
  • อะไรคือความแตกต่างระหว่างการสร้าง Debug และ Release? มีความแตกต่างความเร็วที่สำคัญหรือไม่? ทำไมหรือทำไมไม่?
  • JITting เกิดขึ้นต่อการประกอบหรือต่อวิธี? สิ่งนี้มีผลต่อชุดการทำงานอย่างไร
  • เปรียบเทียบการใช้คลาสฐานนามธรรมกับอินเทอร์เฟซได้อย่างไร
  • อะไรคือข้อแตกต่างระหว่าง a.Equals (b) และ a == b?
  • ในบริบทของการเปรียบเทียบตัวตนของวัตถุกับความเท่าเทียมกันของวัตถุคืออะไร?
  • หนึ่งจะทำสำเนาลึกใน. NET ได้อย่างไร
  • อธิบายการคิดปัจจุบันเกี่ยวกับ IClonable
  • มวยคืออะไร
  • สตริงเป็นประเภทค่าหรือประเภทอ้างอิงหรือไม่
  • อะไรคือความสำคัญของรูปแบบ "PropertySpecified" ที่ใช้โดย XmlSerializer? ปัญหาอะไรที่พยายามแก้ไข
  • เพราะเหตุใดพารามิเตอร์ต่างๆจึงเป็นความคิดที่ไม่ดีใน. NET ที่พวกเขา?
  • สามารถวางแอททริบิวต์ในพารามิเตอร์ที่เฉพาะเจาะจงกับวิธีการได้หรือไม่? ทำไมถึงมีประโยชน์

นักพัฒนาชิ้นส่วน C #

  • วางการใช้งานของการแทนที่ด้วยใหม่ เงาคืออะไร
  • อธิบายการใช้เวอร์ชวลซีลการแทนที่และนามธรรม
  • อธิบายความสำคัญและการใช้งานแต่ละองค์ประกอบของสตริงนี้: Foo.Bar, Version = 2.0.205.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 593777ae2d274679d
  • อธิบายความแตกต่างระหว่างสาธารณะการป้องกันส่วนตัวและภายใน
  • คุณได้รับประโยชน์อะไรบ้างจากการใช้งานการประชุม Interop Assembly (PIA)
  • กลไกใดที่ NUnit รู้วิธีการทดสอบ
  • อะไรคือความแตกต่างระหว่าง: catch (Exception e) {throw e;} และ catch (Exception e) {throw;}
  • อะไรคือความแตกต่างระหว่าง typeof (foo) และ myFoo.GetType ()
  • อธิบายสิ่งที่เกิดขึ้นในตัวสร้างแรก: public class c {public c (string a): this () {;}; public c () {;}} โครงสร้างนี้มีประโยชน์อย่างไร
  • อะไรคือสิ่งนี้ ? สามารถใช้สิ่งนี้ในวิธีการคงที่ได้หรือไม่?

นักพัฒนา ASP.NET (UI)

  • อธิบายว่า POST แบบฟอร์มที่ใช้เบราว์เซอร์จะกลายเป็นเหตุการณ์ด้านเซิร์ฟเวอร์เช่น Button1_OnClick ...

1
คำตอบทุกข้อที่ระบุไว้ที่นี่มีประโยชน์และดี แต่ฉันได้อ่านคำถามทุกข้อในรายการของคุณ (ใช้เวลา 4 ชั่วโมง) และเขียนแบบทดสอบตัวอย่างออนไลน์และผ่าน ฉันจะสนับสนุนให้นักพัฒนา. net ใด ๆ ที่จะผ่านคำถามเหล่านั้นอย่างน้อยหนึ่งครั้งและให้แน่ใจว่าคุณเข้าใจคำตอบและให้แน่ใจว่าคุณได้รับความคิดเห็นที่ 2 และ 3 ผู้คนจำนวนมากตอบคำถาม (พบใน Google) แต่คำตอบจำนวนมากไม่รัดกุมในบางครั้งแม้แต่ผิด ดังนั้นระวัง ตรวจสอบคำตอบที่คุณพบ
JL01

2
ลิงค์ที่ดี! ฉันประหลาดใจที่รู้ว่ามีกี่คน this.Ego ++;
Justin Self Self

@justnS: เกิดขึ้นกับฉันเมื่อฉันค้นพบโพสต์ :-)
Konamiman

ฉันไปสัมภาษณ์เมื่อสองสามสัปดาห์ก่อนและพวกเขาก็พิมพ์ออกมาเพื่อให้ฉันตอบ ซึ่งสำหรับฉันสะท้อนให้เห็นถึงผู้สัมภาษณ์
dbones

1
คุณจะเพิ่มคำตอบเมื่อไหร่? ;)
Thijs van Dien

10

แค่เดินจากไปเรนี

ฉันได้ทำการทดสอบแบบนี้สองสามครั้ง ตอนนี้ฉันแค่เดินจากไป การทดสอบวัดบิตของความรู้การเขียนโปรแกรมเล็กน้อยที่สุด คุณต้องการทำงานกับคนที่คิดว่าการทดสอบเหล่านี้เป็นวิธีที่ดีในการประเมินโปรแกรมเมอร์หรือไม่? ฉันไม่.


1
พวกเขาเป็นวิธีที่ดีที่เป็นมาตรฐานขั้นต่ำกล่าวคือจำเป็นสภาพ แต่ไม่เพียงพอสภาพ
Sklivvz

4
@Sklivvz: บางทีถ้าพวกเขาทดสอบดี การทดสอบเชิงพาณิชย์ส่วนใหญ่เป็นแบบฝึกหัดโง่ ๆ ในเรื่องไม่สำคัญ: "คุณจะใช้คลาสไหนในการอ่านไฟล์ข้อความ?" นักพัฒนาที่ดีอาจพูดคุยสิบนาทีเกี่ยวกับความแตกต่างระหว่างสตรีมไบต์และสตรีมอักขระและรายละเอียดของการเข้ารหัส UTF และยังคงพลาดคำถามนี้ เมื่อเข้าถึงข้อมูลได้อย่างง่ายดายจะไม่มีประโยชน์ในการจดจำข้อมูล
วินไคลน์

2
ฉันเห็นด้วยกับเควิน มีข้อมูลมากเกินไปที่ไม่เกี่ยวข้องกับงานของคุณที่สามารถทดสอบได้ นั่นคือเหตุผลที่พวกเขาคิดค้น Google และ IntelliSense - เมื่อเราต้องการคำตอบเราจะพบพวกเขาตามความจำเป็นในการใช้งาน
ADNow

2
มันขึ้นอยู่กับว่าเขาทดสอบ มีการทดสอบที่ฉันเดินออกไป แต่ก็มีการทดสอบที่ดี เรามีคำถามทดสอบการเขียนโปรแกรมง่ายๆ 3 ข้อ คำถามแรกคือการเขียนแอพ C # ง่ายๆ ที่สองขอให้เขียนแบบสอบถาม SQL 5 อย่างง่าย ๆ Thrid เป็นคำถามที่ไม่สามารถตอบได้หากผู้ทดสอบขอข้อมูลเพิ่มเติม คำถามแรกและข้อที่สองออกกฎโปรแกรมเมอร์ที่ไร้ความสามารถอย่างสมบูรณ์ ที่ช่วยเราประหยัดเวลาจากการสัมภาษณ์คนที่ไม่คุ้มค่ากับเวลาของเรา คำถามที่สามช่วยให้เราเข้าใจว่าโปรแกรมเมอร์เข้าถึงวิธีแก้ปัญหาอย่างไร สิ่งที่มีค่ามาก
Pete

8

ฉันอยู่ในสถานการณ์เหมือนคุณเมื่อปีที่แล้ว นานมาแล้วที่ฉันได้รับการสัมภาษณ์จนฉันรู้สึกหวาดกลัว ฉันค้นหาคำถามสัมภาษณ์ C # และพบเว็บไซต์หลายแห่ง (หลายแห่งมีรายชื่ออยู่ในโปสเตอร์อื่น ๆ ) และฉันศึกษาพวกเขา ฉันประหลาดใจมาก 90% ของการสัมภาษณ์มาจากเว็บไซต์เหล่านั้นมาก, คำต่อคำ ฉันเดาว่าผู้สัมภาษณ์ใช้ Google เพื่อค้นหาคำถาม :)


6

ฉันเห็นด้วยกับคุณใน:

การทดสอบนั้นไม่อาจคาดเดาได้ว่าจะถามอะไรที่คุณไม่ค่อยได้ใช้ในสถานการณ์การทำงานในชีวิตประจำวัน

.. แต่พวกเขาเป็นส่วนหนึ่งของกระบวนการดังนั้นจึงไม่มีอะไรที่เราสามารถทำได้เกี่ยวกับมัน ฉันเป็นเหมือนคุณที่มีประสบการณ์ประมาณ 10 ปีซึ่งประมาณ 5 ใน. NET C # ฉันพบว่าหนังสือสองเล่มที่ดีเหล่านี้:

C # ในความลึก

C # ในกะลา

ควรครอบคลุมทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ C # ส่วนที่เหลือเป็นทักษะและทักษะของคุณเองที่คุณเลือกใช้เฉพาะเทคโนโลยีที่ใช้ C # เช่น ASP.NET เป็นต้น


3
แต่มันเป็นส่วนหนึ่งของกระบวนการดังนั้นเราจึงไม่สามารถทำอะไรได้ วิธีการเกี่ยวกับการสนับสนุนให้ไม่มีการทดสอบการเขียนโปรแกรมโง่ ๆ ในที่ทำงานของคุณซึ่งเป็นส่วนหนึ่งของกระบวนการจ้างงาน กระบวนการจ้างงานควรแสดงความสามารถของคุณไม่ใช่ว่าคุณสามารถจดจำเรื่องไม่ชัดเจน
joshin4colours

@ joshin4colours - นั่นคือเหตุผลที่ฉันเชื่อในการสนทนาที่ดีในการสัมภาษณ์ที่ยาวนาน ... พวกเขาเก่งในเรื่องการกำจัด
TheBoyan

2
ที่จริงผมสัมภาษณ์ผู้เขียนของหนึ่งในหนังสือและปฏิเสธเขา ...
Sklivvz

3

การทดสอบเหล่านี้ได้กลายเป็นส่วนหนึ่งของการคัดกรองผู้สมัครล่วงหน้าโดย บริษัท จัดหางานมืออาชีพและบาง บริษัท พวกเขาถูกออกแบบมาเพื่อให้ผู้สัมภาษณ์ที่ไม่ใช่ด้านเทคนิคเป็นวิธีประเมินความสามารถทางเทคนิคของใครบางคน อย่างไรก็ตามพวกเขากำลังทดสอบเรื่องไม่สำคัญที่จะไม่พูดอะไรที่มีความหมายเกี่ยวกับความสามารถของโปรแกรมเมอร์คนอื่นนอกจากจะกำจัดผู้ที่ไม่รู้อะไรเลยจริงๆ น่าเสียดายที่ บริษัท / นายหน้าบางแห่งให้น้ำหนักกับผลลัพธ์เหล่านี้มากเกินไป

วิธีการศึกษาสำหรับพวกเขาคือการค้นหาเว็บไซต์คำถามสัมภาษณ์ไซต์ที่ถูกกฎหมายและไม่ใช่ผู้ที่พยายามขายคำตอบให้กับคุณโดยมีโฆษณาป๊อปอัปหรือเรื่องไร้สาระอื่น ๆ และยัดเยียดคำตอบ ด้วยวิธีนี้คุณจะได้คะแนนที่ดีและกระโดดข้ามสิ่งกีดขวาง หาก บริษัท วางน้ำหนักมากเกินไปกับผลลัพธ์เหล่านี้พวกเขาอาจไม่ใช่ บริษัท ที่ดีที่สุดที่จะทำงานเพื่ออะไรก็ตาม


2

หากเป็นการทดสอบของ บริษัท จัดหางานมันไม่ควรจะยากขนาดนั้น ไม่ใช่ว่าพวกเขามีผู้เชี่ยวชาญด้านภาษาเพื่อพัฒนาแบบทดสอบ เป็นไปได้ทั้งหมดที่พวกเขาจะทำคือคัดลอก / วางคำถามจากเว็บไซต์

ตราบใดที่คุณรู้ว่าเฟรมเวิร์กทำงานอย่างไรและเนมสเปซ / ไลบรารีที่ใช้กันทั่วไปสำหรับงานต่างๆสิ่งที่คุณต้องใช้สำหรับงานบางอย่างคุณควรจะดี


2

ด้วยการทดสอบการสัมภาษณ์จำนวนมากขึ้นอยู่กับวัฒนธรรมองค์กรและผู้สร้างการทดสอบ หากพวกเขามีเจตนาที่จะถามคำถามที่คลุมเครือและพยายามที่จะเดินทางไปหาคุณฉันจะไปยัง บริษัท หรือหน่วยงานอื่นที่สนใจบุคคลที่มีคุณภาพสูงที่ฉลาดและสามารถทำงานให้สำเร็จได้

ที่กล่าวว่าเมื่อคุณใช้ c # ในงานประจำวันของฉันฉันจะเน้นความพยายามของคุณในการแก้ปัญหาและตรรกะและน้อยกว่าด้านการเรียนรู้หนังสือของสิ่งต่าง ๆ

Project Euler เป็นสถานที่ที่ยอดเยี่ยมในการฝึกฝนและฝึกฝนทักษะที่มีแนวโน้มว่าจะกลายเป็นสนิมเล็กน้อย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.