华为成都所g
1.自我介绍
2.回顾第二题,问我为什么没做到百分百?
3.做题,波的传播,先让说一下思路,写了40多分钟没写出,主要是没模拟出八个方向传播,我申请进行下一个环节;面试官给我讲了一下思路,说再给我15分钟,好像他没讲清楚
,我放弃了,下来查一下是dfs农田灌溉问题,我太菜了,算法功底太差。
4.让介绍一下项目,结果没问技术点也没有问难点,我写了这么多项目就没深入问过。感觉是做算法的![](https://uploadfiles.nowcoder.com/images/20220815/318889480_1660553877149/A06BE39BE3905BBC75BFCB5B4FA29649)
八股文部分
5.TCP中解决拥塞控制的算法,不会
6.弱引用 强引用 虚引用 软引用,不会
7.深拷贝浅拷贝
8.面对对象编程的特点,实现过多态吗
9.问熟悉java中的哪一块,我说多线程,我熟悉多线程的创建方式,让我讲一下线程池,简单说了一下线程池的参数
10.反问,我有哪些地方需要提高的:
答:计算机基础,如果找java的工作需要把基础熟悉,常见的网络通信协议等,因为平时写代码经常要抓包解析以及定位错误,项目方面巩固使用的技术点
11.总结:看牛客其他的面试题不是很简单吗,算法题也是简单题,算法只写20分钟不会就结束,为什么我是先写题,写了2个项目和一个实习都没问。总之就是我太菜了,加强算法和基础,决战秋招。
2.回顾第二题,问我为什么没做到百分百?
3.做题,波的传播,先让说一下思路,写了40多分钟没写出,主要是没模拟出八个方向传播,我申请进行下一个环节;面试官给我讲了一下思路,说再给我15分钟,好像他没讲清楚
4.让介绍一下项目,结果没问技术点也没有问难点,我写了这么多项目就没深入问过。感觉是做算法的
八股文部分
5.TCP中解决拥塞控制的算法,不会
6.弱引用 强引用 虚引用 软引用,不会
7.深拷贝浅拷贝
8.面对对象编程的特点,实现过多态吗
9.问熟悉java中的哪一块,我说多线程,我熟悉多线程的创建方式,让我讲一下线程池,简单说了一下线程池的参数
10.反问,我有哪些地方需要提高的:
答:计算机基础,如果找java的工作需要把基础熟悉,常见的网络通信协议等,因为平时写代码经常要抓包解析以及定位错误,项目方面巩固使用的技术点
11.总结:看牛客其他的面试题不是很简单吗,算法题也是简单题,算法只写20分钟不会就结束,为什么我是先写题,写了2个项目和一个实习都没问。总之就是我太菜了,加强算法和基础,决战秋招。
全部评论
TCP 的拥塞控制四种算法
● 慢开始:主机开始发送数据时先探测,再指数增大发送窗口。拥塞窗口(cwnd)初始值为 1,每经过一个传播轮次,cwnd 加倍。
● 拥塞避免:拥塞避免算法的思路是让拥塞窗口线性增大,即每经过一个往返时间 RTT 就把发送方的 cwnd 加 1。
● 快重传与快恢复:在 TCP/IP 中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。
Java执行 GC(垃圾回收)判断对象是否存活有两种方式,分别是引用计数法和引用链法(可达性分析法)。
引用计数:Java堆中给每个对象都有一个引用计数器,每当某个对象在其它地方被引用时,该对象的计数器 +1;引用失效则 -1;
JDK 1.2版本开始,对象的引用被划分为 4种级别,使程序能更加灵活地控制对象的生命周期。这 4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
正文
(一) 强引用(StrongReference)
在一个线程内,无须引用直接可以使用的对象,强引用不会被JVM清理。我们平时申明变量使用的就是强引用,普通系统99%以上都是强引 用,比如,String s="Hello World"。
Java中的引用,有点像 C++的指针。通过引用,可以对堆中的对象进行操作。在Java 程序中,最常见的引用类型是强引用,它也是默认的引用类型。例如:StringBuffer str=new StringBuffer(“Hello World”);
当在Java语言中使用new 操作符创建一个新的对象,并将其赋值给一个变量的时候,这个变量就成为指向该对象的一个强引用。而判断一个对象是否存活的标准为是否存在指向这个对象的引用。
强引用具备以下特点:
(1)强引用可以直接访问目标对象。
(2)强引用所指向的对象在任何时候都不会被系统回收。JVM宁愿抛出Out Of Memory异常也不会回收强引用所指向的对象。
(3)强引用可能导致内存泄漏。
通常来说,应用程序内部的内存泄露有两种情况。一种是虚拟机中存在程序无法使用的内存区域,另一种情况是程序中存在大量存活时间过长的对象。
(二) 软引用(SoftReference)
java中使用SoftRefence来表示软引用
软引用是除了强引用外最强的引用类型,我们可以通过java.lang.ref.SoftReference使用软引用。一个持有软引用的对象,它不会被JVM很快回收,JVM会根据当前堆的使用情况来判断何时回收。当堆使用率临近阙值时,才会去回收软引用的对象。只要有足够的内 存,软引用便可能在内存中存活相当长一段时间。通过软引用,垃圾回收器就可以在内存不足时释放软引用可达的对象所占的内存空间。保证程序正常工作。
通过一个软引用申明,JVM抛出OOM之前,清理所有的软引用对象。垃圾回收器某个时刻决定回收软可达的对象的时候,会清理软引用,并可选的把引用存放到一个引用队列(ReferenceQueue)。
(三) 弱引用(WeakReference)
java中使用WeakReference来表示弱引用。如果某个对象与弱引用关联,那么当JVM在进行垃圾回收时,无论内存是否充足,都会回收此类对象。
通过一个弱引用申明。类似弱引用,只不过 Java 虚拟机会尽量让软引用的存活时间长一些,迫不得已才清理。
(四) 虚引用(PhantomReference)
java中使用PhantomReference来表示虚引用。
通过一个虚引用申明。仅用来处理资源的清理问题,比Object里面的finalize机制更灵活。get方法返回的永远是null,Java虚拟机不负责清理虚引用,但是它会把虚引用放到引用队列里面。
虚引用的主要目的是在一个对象所占的内存被实际回收之前得到通知,从而可以进行一些相关的清理工作。弱引用之前的两种引用类型有很大的不同:首先虚引用在创建时必须提供一个引用队列作为参数;其次虚引用对象的get方法总是返回null,因此无法通过虚引用来获取被引用的对象。
{"pureText":"","imgs":[{"alt":"wW63fE7n5dTbzGcDoR24zLKHYDzwxb70.jpg","height":"1734.0","width":"1440.0","src":"https://uploadfiles.nowcoder.com/images/20230518/598615403_1684422242743/0A1E745798B6ED9A562E8F080087C95F"}]}
挂了吗,感觉我明天面试更尴尬 八股还没背好完蛋了
感谢分享
相关推荐
01-30 14:23
浙江工业大学 Java 点赞 评论 收藏
分享