首页 > 其他 > 详细

面试总结

时间:2020-04-30 13:39:51      阅读:49      评论:0      收藏:0      [点我收藏+]

今天参加了一轮视频面试,很多专业问题。但是还是有很多不会的。记录一下(可能存在错误,欢迎批评指正)

1.操作系统

  (1)进程和线程是怎么通信的

    进程通信:管道/信号/消息队列/共享内存/信号量/套接字

    线程通信:信号量二进制信号量互斥信号量整数型信号量记录型信号量/消息消息队列消息邮箱/事件event

  (2)死锁的解除

    撤销/挂起进程

    (3)分页和分段的区别

    分页的作业地址空间是一维的,即单一的线性地址空间。 分段的作业地址空间是二维的 在标识一个地址时,即需给出段名,又需给出段内地址。

2.计算机网络

  (1)http和https区别:一个是加密。

    https是怎么保证安全的:HTTP先和SSL通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

    状态码:1XX(正常可忽略) 2XX(正确) 3XX(重定向) 4XX(客户端错误) 5XX(服务器错误)

    TCP/IP:四层模型    网络接口层, 网络层, 传输层,应用层

    UDP报文长度:首部有8个字节 (源端口、目的端口、长度、检验和) ,伪首部12字节(计算机检验临时添加)

3.Java基础

  (1)HaspMap数据结构和实现

    是基于数组实现的,根据key的hashcod和数组长度确定位置。

  (2)为什么重写equals还要重写hashcode

     因为hashcode编码是根据内存中的地址来确定的。重载hashCode()是为了对同一个key,能得到相同的Hash Code。这样才能得到key对应的键值对。

     (3)Java的迭代器

     迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。

4.编写sql

   (1)having作用:where是过滤行用的,having过滤分组的。

技术分享图片

 

     sql思路:1.由于要求学生每门课都大于80.所以需要按照姓名分组。开始我认为是 select name from t where fenshu >80 group by name  having fenshu >80

    后来发现这么写是不对的,因为经过where过滤之后,低于80的课程已经被排除了,这样在用having就没意义了。

    2.然后修改select name from t  group by name  having fenshu >80  。这么写sql报错,经过修改,在having中取最小分数>80,即可得到正确结果

      SELECT name from testsql  GROUP BY name  HAVING min(fenshu)>80

    (注,name是sql的关键字,所以使用时需要加上`name`  引用)

5.算法相关

    (1)冒泡排序(求数组中第五大的数字)

      今天用冒泡排序犯了一个很严重的错误,就是没有区分开外层循环和内层循环。导致在逻辑上出现了错误。而且在计算时间复杂度的时候,犯了错误。因为这个使用了两层for 循环。外层循环是k,即常数,内层是n。所以时间复杂度应该是On。而不是On²。

    (2)算法题:生成6位随机数,至少包含一个重复数字且不相邻。

      目前,还没想到好的解决方案。

    

面试总结

原文:https://www.cnblogs.com/wys-373/p/12808260.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!