浩鲸科技java实习生一面
浩鲸科技java实习生一面 · 长沙
面试时间是前一天中午和hr预约的,最开始联系我的通知我准备一面的不是邮件,而是来自hr的电话,这让我有些意外,也没多想,约完时间第二天就开始了。
面试总共持续了31分钟,从十点到十点半。
面试过程如下:
介绍一下你自己;
实验室项目架构是什么样的?为什么选择这个架构?
Zookeeper&Dubbo用过吗?了解的话讲一讲你的理解。
SpringMVC的工作流程,一个请求的响应过程是什么?
了解Redis吗?讲一讲
Hashtable和HashMap的区别是什么?你最常用的集合的应用场景是什么?
JVM内存模型都了解什么?
垃圾回收算法了解吗?讲一讲。G1收集器具体是什么?
数据库应用场景效率问题,10w条数据,要删前10000条,怎么做效率才最高?面试官给了几个技术选项,我这块答的不太好。
最后一个问题,你对于高并发和分布式有做过应用场景吗?答:熟悉分布式,接触过es,高并发没有做过应用,了解相关场景。
总的来说面试过程还算流畅,对于G1那块和数据库效率那块答得不好的地方面试官都给我讲的很清楚,这一点确实是自己的不足。之后
2020-07-06
面试
顺丰集团java实习生一面
顺丰集团java实习生一面 · 深圳
面试时间是在6月11号下午两点半到三点,已经面过大半个月了,因为最近考试的原因,现在才在这里写下面经。接下来我就描述总结一下一面的过程:
自我介绍
项目介绍
聊一聊数据库的分库分表
二叉树排序
手写快速排序
http协议的理解
面试官接入视频之后开场就说面试时间有限,能简答就简答。虽然开场就给我不是很多深入思考的时间,但是面试官人还是很不错的,在我回答的时候会提醒我概念上答的不完善的地方,告诉我别紧张。(哈哈,我真的有些紧张,原因后面讲)
面试过程相对短暂,一共二十多分钟,不到半小时,但是该问的面基本都覆盖到了。首先项目介绍,面试官对实验室横的向课题似乎比较感兴趣,除了了解之外还问了问有没有实现产品化。其他的数据库和计算机网络那里都是穿插着小知识点问的,比较友好,没有一个操作十连问问到底层具体。大体上我觉得二叉树排序那里答得不好,我对这个的理解仅仅停留在二叉树的遍历方式,一直在答这个,然是感觉面试官有些不满意,应该是我漏掉了重点,网上后来查二叉树查找过程才发现我跑题了。。因为关于二叉树的应用我准备的并不充分,算是相较薄弱的一
2020-07-02
面试
Go语言学习笔记(三)
##Day05 :
🌍并发编程🌏
goroutine :
轻量级“线程“;
非抢占式多任务处理,由协程主动交出控制权;
编译器/解释器/虚拟机层面的多任务,具体执行由调度器完成;
多个协程可以在一个或多个线程上运行;
func main(){
var a [10] int
for i := 0 ;i<10 ;i++{
go func(i int){
for{
a[i]++
//runtime.Gosched() //交出控制权,让其他goroutine有运行机会
}
}(i)
}
time.Sleep(time.Millisecond)
fmt.Println(a)
}
上面的代码简单展示了协程的工作方式,在函数前加上关键字go,表明这个函数交给main协程以外的协程由调度器执行,调度器会在合适的点进行切换。而关于协程相较于线程的轻量级,在
2019-11-27
Go
深入理解Java虚拟机学习笔记(二)
Day02
第六章 类文件结构
6.3 Class类文件的结构
🔽Class文件是一组以8位字节为基础的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有任何分隔符,这使得整个Class文件中储存的内容几乎都是程序运行的必要数据,没有空隙存在。当遇到需要占用8个字节以上空间的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。
根据Java虚拟机规范的规定,Class文件格式采用一种类似C语言结构体的伪结构来存储数据,这种伪结构中只有两种数据类型:无符号数和表,后面的解析都要与这两种数据类型为基础。
↘️其中:
无符号数属于基本的数据类型,以u1、u2、u4、u8来表示1个字节、2个字节、4个字节、8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照UTF-8构成字符串值。
表是有多个无符号数或者其他表作为数据项构成的符合数据类型,所有表都习惯性地以“_info”结尾。表用于描述有层次关系的复合结构的数据,整个Class文件本质上就是一张表,如下图所示。
6.3.1魔数与Class文件的版本
每个Class文件的头4个字节称为魔数
2019-11-25
JavaVM
Go语言学习笔记(二)
##Day03 :
结构体和方法:
🔌面向对象:go语言仅支持封装,不支持继承和多态
结构的定义:
type TreeNode struct {
Left, Right *TreeNode
Value int
}
//切片定义
nodes := []treeNode{
{value:3},
{},
{6,nil,&root},
}
为结构定义方法:
func (node treeNode) print(){
fmt.Println(node.value)
}
☑️Go语言虽然没有构造函数一说,但是可以通过工厂函数来控制。
func createNode(value int) *treeNode{
return &treeNode{value:value}
}
使用指针作为方法接收者:
func (node *treeNode)setValue(value int){
node.value=value
}
⚠️由于结构体是值传递,不存在引用传递。所以只有使用指针才可以改变结构内容。另:nil指针也可以调用
2019-11-25
Go
深入理解Java虚拟机学习笔记
Day01
第2章 Java内存区域与内存溢出异常
2.2 运行时数据区域
2.2.1 程序计数器
▶️字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支、循环、跳转、异常处理、线程恢复等基础功能都需要这个计数器完成。
2.2.2 虚拟机栈
▶️是线程私有的,它的生命周期与线程相同,其描述的是Java方法执行的内存模型。每个方法执行时都会创建一个“栈帧”,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用到执行完成的过程,就对应着一个虚拟机栈的入栈出栈的过程。 (:з」∠)_
局部变量表存放了各种基本数据类型、对象引用。64位长度的long和double占用2个局部变量空间(Slot),其余类型只占用1个。
在Java虚拟机规范中,对这个区域规定了两种异常情况:
1、如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;
2、如果虚拟机栈可以动态扩展,扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常;
2.2.3 本地方法栈
为虚拟机使用到的native方法服
2019-11-22
JavaVM
Go语言学习笔记
Go语言学习笔记
##Day01 :
函数:
函数的定义:
**·**func xxx(函数名)(携带的参数)函数的返回值{
/* 函数体 */
}
eg:
func minus(a,b int , op string ) int{}
func div(c,d int)(int,int){}
func multiply(e,f int)(g,h int){}
·▶️作为函数式编程的语言,在Go语言中一个函数可以有多个返回值,在声明返回值的return语句中多个返回值中间用,隔开。
·▶️如果在定义函数返回值时不想使用某个参数,在参数位上输入_下划线即可
·🏴函数式编程规范:
func apply(func op(int , int) int , a , b int )int{
·⏫解析:在apply函数中传入的参数是op这个函数和a,b两个int类型的变量,op函数返回值是int,自带两个int类型参数。
·🛰定义一个参数列表:
func sum(numbers ...int) int{
s :=0 for i := range numbers{
2019-11-21
Go