【问题标题】:Interview Questions on Socket Programming and Multi-Threading [closed]关于套接字编程和多线程的面试问题[关闭]
【发布时间】:2010-09-15 16:28:33
【问题描述】:

请任何人告诉我以下主题可以在面试中提出的问题

  • 套接字编程
  • 多线程

提前感谢所有提供时间的人

【问题讨论】:

    标签: c++ multithreading sockets


    【解决方案1】:
    • 说出 Java 套接字的一些优点和缺点。
    • URL实例和URLConnection实例有什么区别?
    • 如何连接到 URL?
    • 什么是 Java 网络和 RMI 中的套接字?
    • 创建 TCP Socket 需要哪些信息?
    • 两个重要的 TCP Socket 类是什么?
    • 什么时候抛出 MalformedURLException 和 UnknownHostException?
    • RMI 代表什么?
    • 什么是 RMI?
    • File 和 RandomAccessFile 类有什么区别?
    • 对象在作为对象写入流之前必须实现什么接口?
    • 解释查找本地端口
    • 两个重要的 TCP Socket 类是什么?

    【讨论】:

    • 抱歉,这些问题中有一半是纯 Java 的,而另一半似乎没有多大意义。
    • 对不起。我认为主题是在java套接字中。我没看懂题目。
    【解决方案2】:

    套接字问题

    • 什么是套接字?
    • acceptconnect 有什么区别?
    • closeshutdown 有什么区别?
    • 您将如何将connect 异步发送到www.google.com

    多线程问题

    • 什么是线程,它与进程有何不同?
    • 什么时候可以选择在单 CPU 系统上使用线程?
    • 如何衡量线程之间的上下文切换开销?
    • 如何制作一个 MT 安全的哈希表,同时允许最大并发性?

    【讨论】:

      【解决方案3】:
      • 为什么典型的套接字程序需要多线程
      • 如何从同一进程/线程同时与一堆不同的网络连接通信?提示:异步套接字
      • 解释 Internet 数据传输的工作原理?或解释网络服务器的工作原理?根据套接字编程概念、提示 TCP Http 等来回答它。

      【讨论】:

      • "解释一下互联网是如何工作的?"除非您正在雇用 Vint Cerf,否则对我来说,这似乎过于宽泛了。
      • Innternnet 是如何工作的?互联网是如何运作的?数据如何传输?
      • 典型的套接字程序需要多线程的想法是无稽之谈。早在多线程变得普遍之前,多路复用 I/O 和/或多道程序就已经非常成功地使用了。
      【解决方案4】:

      作为招聘经理,我最喜欢问的网络问题是:

      想象一个用户坐在 连接以太网的 PC。他有浏览器 打开。他输入“www.google.com” 在地址栏中点击回车。

      现在告诉我第一个数据包是什么 出现在以太网上。

      可能的答案(正确性各不相同)包括:

      • 我不知道。
      • HTTP 请求 包。
      • TCP 同步数据包。
      • DNS 请求数据包。
      • 一个 ARP 数据包。
      • 视情况而定。

      每个答案都揭示了人们对网络的总体理解,尤其是 IP 和 TCP。随后的讨论可以揭示他们的理解。 (当然,假设提问者在这方面有一定的专业知识)。

      【讨论】:

      • 聪明的问题。
      • 智能,在探索时可以很好地连接一切。
      【解决方案5】:

      您是因为被拉去面试即将加入您团队的人吗?提出基于您在日常运营中必须面对的现实问题的问题。想想你遇到的与套接字编程有关的最后一个错误,并将其变成一个面试问题。

      理论很好,但你想知道加入团队的人有在战壕中的经验。

      【讨论】:

      • 你宁愿让那些从未听说过僵局的人远离你的战壕。这就是这些问题的目的......
      • 我从未见过谁聪明不能相对较快地掌握线程和套接字的基础知识。
      • @el fuser:视情况而定。如果您的公司要投资于新聘用的人,那么只需专注于聘用聪明的程序员。如果你要引进一个真正必须开始行动的人,那就另当别论了。
      【解决方案6】:

      几个示例问题:

      • 异步 I/O,一种方法是询问不同客户端可能查询服务器的问题,如果通过多个线程实现可能会导致竞争条件(例如结果缓存)。如果受访者使用多个线程,请提出竞争条件,看看他们是否提到异步 I/O 作为选项。
      • 死锁和活锁有什么区别
      • 制作 Web 服务器原型
      • 制作 Web 客户端原型
      • 什么是临时端口;或者描述一个负载压力应用程序,它以每秒 1000 次请求访问服务器,但几秒钟后停止向服务器发出请求; 2-4 分钟后,应用程序再次开始向服务器发送 1000 个请求。
      • 编写一个线程安全的生产者/消费者缓冲区,可供一个或多个生产者/消费者访问
      • 客户端/服务器和p2p有什么区别
      • 这更多的是网络,但了解套接字调用下面发生的事情会很有帮助:描述 TCP 3 次握手
      • nagle 的算法是什么?什么时候需要?您将如何关闭此功能?
      • Linux 变体:在编写守护程序时,基本构建块是什么(即分叉子进程并杀死父进程、关闭 stdin/stdout/stderr 等)
      • Windows 变体:编写 Windows 服务时,基本构建块是什么。
      • 设计一个用于在客户端和服务器之间进行通信以发送音频/视频的协议。您如何将其扩展为下一个最新/最强大的功能。
      • TCP 窗口是如何工作的,我可以做些什么来优化跨大陆执行大量大型读取的应用程序的性能。

      【讨论】:

        【解决方案7】:

        套接字编程

        • UDP 和 TCP 之间的区别。
        • 异步和同步套接字之间的区别。
        • 什么是数据包。
        • 您如何确定数据包在到达时是否格式不正确。
        • 您如何确定一个数据包的结束位置和另一个数据包的开始位置。
        • 什么是端口。

        多线程

        • 你知道哪些同步原语,区分它们。
        • 什么是死锁,什么是活锁。
        • 什么是竞争条件。
        • “无锁”一词是什么意思。
        • 终止线程的最佳方法是什么。
        • 为什么不应该使用 TerminateThread 类函数。

        【讨论】:

          【解决方案8】:

          什么是死锁以及如何避免它?

          Some socket programming questions.

          【讨论】:

            猜你喜欢
            • 2011-11-10
            • 2014-03-12
            • 2010-10-27
            • 2016-04-19
            • 1970-01-01
            • 1970-01-01
            • 2011-03-03
            • 1970-01-01
            • 2019-04-12
            相关资源
            最近更新 更多