今天老板让我算一个手机模型和真机重量一样吗的重量,我在电脑哪里搞了半天也没算出来


这是一篇基础的 houdni 教程,它所包含的內容很有限,把学习内容都搬上来就成 了 HELP.所以我把他定义成一篇 带你入门的教材. 目的是希望国内能有更多的 人去了解和使用这款工具. 只有使鼡的人多了才有更多交流和互相学 习的机会. 但是,这绝对不是手把手之手册.如果最基本的那些操作你都不愿意去看 ,那就..... 这将是一篇又臭又长嘚文章 ,望大家漫漫等待序 每款动画 软件都有着他 们悠久 的历史,houdini 也一样. 不用去一一罗列,只要说十几年前的那部终结者 II,你一 定会记得那水银人嘚精彩特效.就是用 houdini 完成的.在之后十几年里,houdini 一直在电影特效领域占有着很重要的地位.不但因为它总在为使用者提供着强大 的各种大小工具,而苴一直紧跟着时代的步伐,sidefx 的开发团队持续的在对一些 已经过去式的部分进行着重新的规划. 再次就是 houdini 是一款开放性极高的平 台,很容易的嵌入箌 Team work flow 中 而 houdini 在国内一直是处女地.鲜有人 愿意或者是持之以恒的去使用它,其实即便在国外,houdini 的使用群也是很集中 的.原因是关于 houdini 的教程实在是很少,再佽就是它的 GUI 的不友善,往往有人 打开半天尽不知从何下手,再次就是 houdini 相比 maya,max 等会更早的接触到 一些....的运用如果你想学好 houdini,你需要具备或赶紧去学习哪些知识而不至 于半途而废呢? 1:确定自己是一个有着其他软件丰富运用经验的人,这样你至少 对要做什么有些了解. 2:尽量把学会的软件操作忘记.那些对与 houdini 不合用,有 空可以侃侃 SHAKE,NUKE 5:如对他的向量语言(VEX)感兴趣,一些计算机图形学的基础知识是要去看的,不

这些模块都是完全独立的,你可以从任何嘚一个模块中通过创建 OPnetwork 重复 调用其他模块,彼此之间没有绝对父子关系(注:不是创建模块本身,而是创建可以 独立调用模块功能的 OPnetwork 接口,按回车键鈳进入 OPnetwork 创建该模块 功能网络结构)任何模块的 OPnetwork node 都可以看成是一个文件夹.而文件夹 里要是没有文件,那么文件夹本身也没有意义,当然你可以把文件内容或者整个文 件夹复制剪切到任何 同类型 路径. tree list 则就可以把他看成系统中路径和

文件列表.如果你经常需要做编译工作.一定知道如该路径並没有设置到 PATH 中,

可观看该 operate 是如 何构件的 那么在具体的操作时.我们又如何去定义操作的象征意义呢?------后期 软件,SHAKE,NUKE,DF,那些 node tree.houdini 是很纯粹的 node tree. 对某个 节点进行操作,只要建立某功能节点.将两个接点相连即可.有些甚至不需要 view 视图的目标选择,甚至不需要显示,这在很大程度上节约了 时间,因 为有时候往往 某些节点的运算是很漫长的.如果你愿意,甚至在操作中完全不显示任何层级,只 要在调用时告诉 node 我需要调用哪个模块哪个路径哪一层就 OK 了. (如何選 择.在节点上都有一些蓝色或者紫色的按钮,自己尝试一下) 明天继续

一些容易混乱的而你必须正确的操作

所以当你从一个模块转到另一模块時,感觉 UI 没什么改变,实际不是,你可以很容 易的从 UI 的颜色分辨出来 VIEW 视图默认就象 MAYA 的 UI 一样,一些菜单以

条状隐藏了.你必须点击显示他们.以 SOP 的 VIEW 视图为列

2: 按 TAB 出现该模块功能菜单。 选取你要的操作,

注意,只是选择模式不同,你可以点击左侧显示手柄的按狃来切换显 3: 选择节 点 , 在 VIEW 视 图内 按 ENTER 进 入 當 前 节 点 编辑 模 编辑模式时 UI 底部出现蓝色提示信息 4: U

式.ESC 结束当前编辑模式. 进入父集,I 进入子结构.

很多很多很有意思的 选项和功能. 我这 里只列举朂基本最常用的 哪些模块可以 在开始先不看 DOP ROP CHOP COP VOP

三 最最 基本 的 节 点

出现一屏的节点,你一定昏了.别急,几乎所有的模块都有那么多

普通情况下造型動画的模块,所以首先了解 SOP 是重要的.那么我们先从哪里开 始呢?这些节点你是首先要会操作的 1 transform (不用解释了) 2 edit 手动编辑 表面位移 注意操作一次就会結束 edit.不要再去创建新的 edit 节点,Q 可以重复 极其重要的节点,是对点,法线等表面信息的操作,默认

情况下创建或倒入的物体是没有颜色,材质 UV,法线信息嘚,必须添加 point 来创 建这些信息.并且对 particle 信息的修改也可在这里操作

信息可以自定义也可以让 DHOUDINI 自己动 态生成, group 是重中之重,使用 group 可以操作出极其复杂嘚效果,很多逆向递归的操作也往往借助 group. 而且 group 的信息一直向下或者向上传递,在几乎所有 node 的参数中都有 group 选 项,你可以只对 group 内容进行操作修改 5 copy 最常鼡的节点. 很多人喜欢

显的更直观.我对 particle 的操作只要在 SOP 路径下的 POP network 下层做修改 就可以了, 其中 point 和 group 几乎成了所有场景复杂内容都会包含的节点,下 面这個场景我为大家由浅入深的建立了几个 OBJECT,让大家对基本的操作有所 明了

那么有没有最基本的或者显而易见的模块协作的列子呢由于HOUDINI

所提供的功能更象积木而不是积木搭建的成品, 因此制作效果或者模块协作变的 很多样.我这里用图文举一种协作方式 四 问题 1: 有 象 M AY A 里的 add attr 的 功 能 吗 答:

attribcreate node 负责为 input node tree 增加属性,在下层节中可用$NAM E来调用 2: 为什么HOUDINI没有支持FBX 答: H

OUDINI的CHOP是一个强大的 channel 外部和内部读取平台,你可以 使用编写*.chan 文件从MAYA中将动画信息导入并传递给物体.因此鈈需要 FBX 注: 网络上有些类似的工具.我也有自己编写的MAYA-HOU 3: HOUDINI中能动态读取每点信

DINI的工具 将在后面上传 息吗? 点数信息 答:

在 POP 中$ID就是粒子ID.在SOP中,$PT就是 4: 那么$PT就是点的ID吗 答: 不完全昰,实

际上在很多情况下$PT会随着 input info 的改变而改变因此他是动 态 的. 5: point /add normal 有什么主要的功能 答: 许多与点有关

答: 实际上 mantra 并不比 prman 慢.泹是由于他是一款

内置渲染器,所以考虑兼容性问题在一些地方产生谬余就很正常,mantra 提 供了和 rib 相似的 场 景描述机制IFD 编辑 IFD鈳以自定义 场 景信息 7: 为什么将 metaball 的数量复制多就很慢? 答: 在不需要编辑 pre

-info 的情况下通常并不使用 metaball+copy 的方式,而是使用 isooffset, 8: 为什么输出I3D文件如此之慢 答: 默认SIZE为128^3;

即XYZ三方向各采128样点,128^3=2097125

答:实际上对于 RD 而言.沒有什

么现有功能是 HOUDINI 可以独有的.但是对于一般 USER 来说.一些功能还是很 具有诱惑性的 粒子相互碰撞功能 何形态的 GROUP 功能 缝转换功能 1:自由控制的变形球功能. 4 :粒子相互吸引功能 2: L_SYSTEM 机制 5: 每点控制功能 3: 6: 任

7: 数据重写功能(逆向传递)

10: 点阵 化手机模型和真机重量一样吗功能

12: 快速的任何数据类型的运动修改功能 14: DIGITAL ASSET 还有很多不一一列举

用自定义面板完成, 的 UI

操作整合为自己的工具包,并且可以快速的修改. 行网 络协 作 ?

可以: 而默认 的情况下只要 将图爿等文件和场 景文件放在一个路径 下 ,HOUDINI 可以通过$HIP 自动查找 五:HOUDINI 有像 MAYA 那样的层功能吗? 答:

因此经常使用 COP 进 行 预测试

公司之一,因此兼容型是很好的 较怎么样

答:HOUDINI 的角色动画功能在近几个版本在流程上有了明显改善

但是不要以为 HOUDINI 的角色动画机制是鸡肋,他的强大和克控型是极其出色 的 ⑨:HOUDINI 的粒子系统和 MAYA 比如何 答:十万八千里 十:

HOUDINI 能做什么特殊的变形动画?

答: 不同拓扑间的变形动画 , , ]

而是因为自己觉得不划算,

掱机模型和真机重量一样吗使用OBJ或者IGES可以完整的将多边形或者曲面手机模型和真机重量一样吗倒入HOUD INI, 但是茬一些情况下曲面手机模型和真机重量一样吗表面参数将有细微变动 需要使用 caven 和 fuse 整理 动画文件可以 编写*.chan 文件..chan 作为HOUDINI

的 chanell 编輯模块CHOP的读取格式是非常容易读懂的. 不需要特殊的编译, 使用任何的文本工具就可以打开观看. 只要将动画信息按名称分列记錄就可以了 然后在CHOP中倒入即可. (现在在家,等一下会传上范列) .同样材质UV 信息也可以完整的倒入到HOUDINIΦ,摄象机的 transform 信息是和MA YA基本一致但是 option 有些不一样.换算公式为 tan(( Maya 摄象机

别点阵化, 然后分别COPY OP

METABALL匼并后两者自然融合关于P

可以说, HOUDINI的粒子系统是商业软件中非常优秀的这里就 1:发射器:source (需要

不罗嗦了.那么哪些NODE是最最基本的呢? 指定 来 源 ),locate

3: force ,wind. HOUDINI中多种场的控制都在一起并没有象MAYA 那样分开 4: creep 相当与MAYA中的 goal, 6:group 5: color (也可以在

SOP中定义 point 来控制)

*.chan 文件格式如下假设为某物体点动画列为一类型每贞数据. 行为数据类型排 列(注意:在这里我假设数據类型排列为 point1/tx point1/ty point1/tz point1/tx point2/ty...... 实际并没有强行规定数据排列方式, 你也可以全部为 tx 数据

只要在CHOP中改动即可

论出现都会伴随着经典手机模型和真機重量一样吗的出现,比如[blinn77] [WARN83]..等等受首 次提出 l_system 近似理论的是1905年 von 提出的,并且给出了经典雪花曲 线[KOCH05] 而直箌1968年的 lindermayer 提出了字符串重写机 l_system 的核心概念就是

制.之后以其名字缩写称这中机制为 l_system

重写即使用预先规定的规则使某个物体不段重複复 写初始物体以达到复杂形 体.它有些特征,比如对称自相似,重复延展等等.其中很典型的列子就是D OL_system.设定 a,b, 规则为 a=ab,b=a, a 为初始公悝. 每次派生都由规则定

因此将这样的字符串解释为

"龟"“turtle” .起定义为三元组(xy,a),(x,y) F - 径直增加 /

为龟坐标.a 为龟头指向. 并给定步长与增量. 设置如下 一步长 f 空径直增加一步长 \ 右旋转某度数 + 左倾 斜某度 数

. . . . . 在HOUDINI中可以建立完全属

于自己的L_system 形态.进入SOP建立L_system.在最后的 rules 面 版. Premise 初始公理 Rules 规则清空左右内容, 我们开始在

Premise 内写F-F-F-F. 并且将 valuse/angel 设为90. 絀现正方型曲线 我们很容易可以分析:径直增加一步长,右倾斜某度数再径直增加一步长,再 右倾斜某度数.然后我在Rules 中定制重写規则F=F-F+F.出现奇特 的自重复图形, 分析规则F=F-F+F替代到公理F-F-F-F中即第一

分析 Premise : 径直增加一步长, 径直增加一步长 分型B, 这样我们 Premise Rules3

再径直增加一步长分形A,再径直增加一步长径直增加一步长 可以得,通过定义分型我们鈳以建立复杂的叉树结构.如 FFFACFF Rules1 A=[B]////[B] Rules2 B=&//FFFA

函数方程的等容积手机模型和真机重量一样吗(你可以把它想象成具体表现点容积

的工具) 它和什麼有关可以读取 I3D 数据, I3D 可视化. (I3D就是 3d texture file,不是3D纹理贴图 通俗的讲就是一个3D空间的点的容积集合) 和 ISO O FFSET很接近 洳何写 function? 建立 ISO SURFACE ,默认就是一个

ISO SURFACE 表现等容积手机模型和真机重量一样吗因此可以把手机模型和真机重量一样吗想象成在一定范围内的数据 的 集 合 . 由 此 变 化 我 们 可 以 剪 切 圆 得

出很多有意思的复杂几何体, 但是最多的用处还是用来转换I3D.但是个人用 下来ISO OFFSET的几率更多些)

可以通过设置domin来实现

104、登录状态嘚保存你认为可以保存在sessionstorage或者localstorage或者cookie或者你知道的哪种方式存在了哪里?为什么保存在那里

存储结构 将对象加工可观察 函数式 vs 面向对象

106、 按需加载路由怎么加载对应的chunk文件的?换句话说浏览器怎么知道什么时候加载这个chunk以及webpack是怎么识别那个多个经过hash过的chunk文件

把数据放到 body 裏面,必须用 POST 方式取这是 HTTP 协议限制的。

108、右边宽度固定左边自适应

109、.四种定位的区别

relative 相对定位 相对于自身原有位置进行偏移,仍处于標准文档流中
absolute 绝对定位 相对于最近的已定位的祖先元素, 有已定位(指position不是static的元素)祖先元素, 以最近的祖先元素为参考标准如果无已定位祖先え素, 以body元素为偏移参照基准, 完全脱离了标准文档流。
fixed 固定定位的元素会相对于视窗来定位,这意味着即便页面滚动它还是会停留在相同的位置。一个固定定位元素不会保留它原本在页面应有的空隙

110、封装一个函数,参数是定时器的时间.then执行回调函数。

111、一行代码实现数組去重

闭包是指有权访问另一个函数作用域中变量的函数

在函数内部嵌套使用函数

  • 因为在闭包内部保持了对外部活动对象的访问,但外部嘚变量却无法直接访问内部,避免了全局污染;
  • 可以当做私有成员,弥补了因js语法带来的面向对象编程的不足;
  • 可以长久的在内存中保存一个自己想要保存的变量.
  • 可能导致内存占用过多,因为闭包携带了自身的函数作用域
  • 闭包只能取得外部包含函数中得最后一个值

有时候一些按钮的简單点击交互可以通过css伪类来实现;必须点击了更改颜色;松开恢复;IOS手机会出现伪类无效的情况;iOS系统的移动设备中,需要在按钮元素或body/html仩绑定一个touchstart事件才能激活:active状态

  • 都是循环遍历数组中的每一项
  • forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组)
  • map会返回一个新数组不对原数组产生影响,foreach不会产生新数组,
  • map因为返回数组所以可以链式操作foreach不能

134、浅拷贝和深拷貝

jQuery.extend第一个参数可以是布尔值,用来设置是否深度拷贝的

浅复制--->就是将一个对象的内存地址的“”编号“”复制给另一个对象深复制--->实现原理,先新建一个空对象内存中新开辟一块地址,把被复制对象的所有可枚举的(注意可枚举的对象)属性方法一一复制过来注意要用递歸来复制子对象里面的所有属性和方法,直到子子.....属性为基本数据类型总结,深复制理解两点1,新开辟内存地址,2,递归来刨根复制

外邊距合并指的是,当两个垂直外边距相遇时它们将形成一个外边距。
合并后的外边距的高度等于两个发生合并的外边距的高度中的较大鍺

136、js加载位置区别优缺点

html文件是自上而下的执行方式,但引入的css和javascript的顺序有所不同css引入执行加载时,程序仍然往下执行而执行到<script>脚夲是则中断线程,待该script脚本执行结束之后程序才继续往下执行
所以,大部分网上讨论是将script脚本放在<body>之后那样dom的生成就不会因为长时间執行script脚本而延迟阻塞,加快了页面的加载速度

但又不能将所有的script放在body之后,因为有一些页面的效果的实现是需要预先动态的加载一些js腳本。所以这些脚本应该放在<body>之前

其次,不能将需要访问dom元素的js放在body之前因为此时还没有开始生成dom,所以在body之前的访问dom元素的js会出错或者无效

script放置位置的原则“页面效果实现类的js应该放在body之前,动作交互,事件驱动需要访问dom属性的js都可以放在body之后

答:自我介绍是面试中唯一的自巳主动介绍自己的环节一定要好好把握好,你数据结构学的号可以手撕一个红黑树你就说我数据结构掌握地很好反正就是要把自己的優势凸显出来,比如自己对于java的知识较熟悉我介绍完自己的本科经历以后,我就说我是保送到本校继续读研究生然后最末尾会加上自巳熟悉java,然后面试官就会问java的一些东西;

3、java的8种数据类型有哪些

4、问了Integer缓存数据的范围?

5、紧接着问了Object类有哪些方法

答:我说如果常量池中,原来没有“123”那么就是生成了2个对象如果常量池中有“123”那么只要1个对象生成(面试官别他妈的问这种问题了)

7、由于提到了wait,順带问了wait和sleep有什么区别?

答:wait的话会释放对象锁sleep的话不会释放的对象锁

8、由于还提及了hashcode,面试官接着问我hashcode用在哪里?

答:这个我不假思索地说hashmap和ConcurrentMap,这里我猜面试官肯定要继续问我这两个东西了

9、果不其然,面试官说讲一讲hashmap?

答:hashmap我讲了hashmap的数据结构数组链表结构,讲叻hashmap的put,get,扩容的底层原理同时讲了hashmap在1.7与1.8中的区别,put中引入了红黑树以及扩容的时候不同,这些就讲了挺长时间最后我说了一句hashmap不是线程咹全的。

10、这里提及了hashMap是非线程安全的面试问我为啥不是线程安全的,举几个例子

答:我说了,在扩容的时候hashmap会可能产生环造成死循环;hashmap在插入新的阶段的时候,多个线程同时插入会把除了最后的那个线程的其它线程插入的结点丢失;对于修改的时候,多个线程修妀对只保留最后的一个线程的修改结果;扩容的时候,会只保留最后一个线程的扩容后的那个数组;从扩容修改增加说了一遍;

11、我本鉯为要接着问ConCurrentMap额,出乎我的意料并没有问,可能觉得我hashmap准备的很充分然后接着问了我JVM了解吗?

12、让我说意思JVM的分为哪几块

答:方法区,虚拟机栈本地方法栈,堆程序计数器,然后我就自己没等面试官问新的问题继续接着说,方法区和堆是线程共享的虚拟机棧本地方法栈和程序计数器是线程私有的,除了程序技术器不会发生内存溢出其它都会发生内存溢出,并说了哪些会发生堆溢出哪些会發生栈溢出;这里就是大家要学会自己吧啦吧啦地说一堆因为据我观察每个面试官面试每个是有一个固定时间的,超过这个时间段就结束了所以只要面试官不打断你,你就一顿说;

13、由于提及到了内存溢出面试官问我内存溢出和内存泄漏的区别?

答:内存泄露我说就昰一块申请了一块内存以后无法去释放掉这块内存,丢失了这段内存的引用;内存溢出就是申请的内存不够撑不起我们需要的内存;

14、这里问完我就去问了数据库,4大特性是啥举个例子?

答:原子性我说就是一个事务要么全部完成,要么全部失败要么做要么不做;一致性,比如a+b=100,一个事务改变了a比如增加了a的值那么必须同时改变b,保证在事务结束以后a+b=100依然成立这就是一致性;持久性,额就是修妀完以后在数据库中生效是永久的;隔离性,我就是说对于A对B进行转账A没把这个交易完成的时候,B是不知道A要给他转钱

15、数据的隔離级别有啥,每个隔离级别举个例子

答:额,(怎么都要举例子啊啊啊啊啊~),内心波澜脸上面无表情地说:1.未提交读,事务中发苼了修改即使没有提交,其它事务也是可见的举例子我就说对于一个数A原来50修改为100,但是我还没有提交修改另一个事务看到这个修妀,而这个时候原事务发生了回滚这时候A还是50,但是另一个事务看到的A是100这就是未提交读;2.提交读,就是说对于一个事务从开始直箌提交之前,所做的任何修改是其它事务不可见的举例就是对于一个数A原来是50,然后提交修改成100这个时候另一个事务在A提交修改之前,读取到了A是50刚读取完,A就被修改成100了这个时候另一个事务再进行读取发现A就突然变成100了;3.可重复读;可重复读,就是对于一个记录讀取多次的记录是相同的举例就是对于一个数A读取的话一直是A,前后两次读取到的A是一致的;可串行化读就是说在并发情况下,和串荇化的读取的结果是一致的没有什么不同,这个举例我就说不会发生脏读和幻读;然后数据库这一块就过去了。

16、接着问我计算机网絡问了我7层有哪7层?

答:物理层数据链路层,网络层传输层,会话层表示层,应用层;

17、接着问了我TCP在哪层UDP在哪层,HTTP在哪层

答:TPC和UDP在传输层,然后HTTP问我在哪个层我一下有点忘了,这个没答上来会去看了是在应用层。

18、问到这里就结束了然后面试官问我有啥想问的,我就问如何评价我的面试表现

答:因为一面都是问基础的知识,面试官和我说我感觉你基础很扎实,他直接和我说我这里嘚话是通过的不知道后面的面试官怎么问你,然后我说了声谢谢就去酒店的一个会议厅等待二面;

一面过了没多久,就立马通知二面叻中途感觉有点饿了,美团还挺人性话的在后面的桌子上放了一堆饼干,忘了饼干的名字了总之特别好吃,我吃了好几块

2、项目介绍,及其亮点介绍

然后问了我集合了解吗,让我说话ArrayList和LinkedList的区别

答:能不用尽量不要用,linkedList底层是链表它使用for进行遍历,访问每一个え素都是从头开始访问然后直到找到这个元素比如说找第三个节点,需要先找到第一个节点然后找到第二个节点;继续找第4个节点不昰从第三个节点开始找的,还是从第一个节点开始所以非常的慢,不推荐可以用迭代器进行遍历。

答:我感觉是因为一面问了hashmap所以②面面试官可能是看见了面试记录,额这块我非常熟,这个我又讲了很长时间讲了ConCurrentHashMap的底层的分段锁的结构,讲了ConCurrentHashmap的get源码get源码是没有使用锁的,这里我把get源码背写了下来并给面试官讲了get源码在插入修改删除的多线程下是安全的;然后讲了put操作,remove,扩容操作然后讲了在1.7囷1.8的区别,引入了红黑树链表长度大于8转换成红黑树,采用了CAS+synchronized来保证并发安全吧啦吧啦又讲了挺长时间;

5、来看看这道题,说着拿出來一个小纸条

答:这个纸条感觉每个面试官都是只有纸条所以尽可能地和周围的同学多交流,有一定的肯可能他的面试官就你的面试官题目:让我自己手算a,b,c,d的值,

计算完我问他对不对他没勒我。。

6、然后问我单利模式了解不写一个单例模式?

答:这个之前准备过我写了一个双重锁的单例模式。

建议不要写这种单例模式或者直接把那几种都写出来

7、接着问了我虚拟机了解吗,介绍一些虚拟机的內存手机模型和真机重量一样吗

答:这个之前也准备过,这里要注意了虚拟机的内存手机模型和真机重量一样吗和运行时的数据区域鈈是一回事;虚拟机内存手机模型和真机重量一样吗又叫JMM,就是每个线程有自己的工作内存然后又一个主内存,线程工作的时候都是在洎己的工作内存中拷贝一个主内存的副本;还说了JMM的happens before原则程序顺序原则,锁原则线程中断原则,传递性原则还有其他的没想起来就沒说了。

8、介绍一些你了解的垃圾回收算法

答:标记清除,标记整理复制算法,把每个算法是啥说了一遍;

9、问到这里问了我你知噵SurvivorRatio这个参数为啥初始是默认的8:1:1吗?

答:这个由于刚才刚问了垃圾回收算法我觉得可能有关联,于是我说方便复制算法操作,Eden区域大多數都是朝生夕死的这个比例,可以方便复制算法的中from和to来回进行复制存活的对象额,说完他没有说啥,感觉是默许了吧;

10、突然又問二叉树了解吗,写一个二叉树的深度搜索遍历

答:当时我听到中道题,有点懵什么是二叉树的深度搜索遍历,我只知道层次遍历前序后序中序遍历啊,我想了想感觉和后序遍历挺像的,我觉得应该就是后序遍历吧我就先写了个后序遍历的递归写法

然后他看了┅眼,没说啥感觉这个面试官有点话少冷淡,全程不和我互动emmmm....下来自己百度了下,对的。

这个代码问完我,让后让我去等通知峩感觉回答的还行,果然没过几分钟通知我去三面;

1、照例自我介绍和项目介绍;

2、上来就让我手撕一个单例模式。。

答:继续写我嘚双重锁模式

3、让我讲了讲代码是啥啥意思

STEP 1. 线程A访问getInstance方法,因为单例还没有实例化所以进入了锁定块。

STEP 2. 线程B访问getInstance方法因为单例还没囿实例化,得以访问接下来代码块而接下来代码块已经被线程1锁定。

STEP 3. 线程A进入下一判断因为单例还没有实例化,所以进行单例实例化成功实例化后退出代码块,解除锁定

STEP 4. 线程B进入接下来代码块,锁定线程进入下一判断,因为已经实例化退出代码块,解除锁定

STEP 5. 線程A初始化并获取到了单例实例并返回,线程B获取了在线程A中初始化的单例大体是这么回事。

5、由于我的项目中提及到JVM所以给我出了┅个场景题,垃圾会收器中标记清除多次后,由于采用的是标记清除算法那么你觉得可能会出现什么问题?

答:然后我说由于产生了內存碎片所以当分配一个大对象的时候,由于内存不连续那么会产生full GC;

答:minor会产生在eden区满了,fullGC产生在老年代的剩余空间不足以及永久玳内存不足也会发生fullGC。

7、除了你项目中的内存溢出问题你还知道哪些关于内存溢出内存泄漏的?

答:这里之前了解过ThreadLocal,我说ThreadLocal中的键值对Φ的键是一个弱引用,那么在内存回收的时候这个键很可能会被回收掉,然后键没了就无法找到value的值,造成了内存泄漏;

8、然后给我絀了一个动态规划的手写代码题说来写个代码吧,大体是在n*m的矩阵方格中找一个最大的正方形是几乘几的,有点忘了

答:由于没有准备过动态规划的题目,这个题目看到我只说了暴力解决的方法然后面试官提示让我用动态规划做,我想了半天没想出来。。当时感觉应该是凉了。

时间差不多的时候,面试官说就到这里吧,然后让我出去等通知果然通知我今天面试结束了,整整一个下午特别特别累,前两面结束的时候感觉特别稳没想到最后还是因为手写代码这一块不会动态规划挂掉了,当时感觉心态有点崩。

自己整理的一套Spring进阶学习脑图,如果觉得适合自己可以点击原图下载

欢迎转发,欢迎评论您的点赞关注是对笔者最大的支持。感谢

更多资源获取方式:关注专栏Java进阶学院 专栏简介有获取地址。欢迎讨论交流为了防止有人恶意破坏,需要审核通过后方可加入审核通过后還请自行下载查看。欢迎转发评论

我要回帖

更多关于 手机模型和真机重量一样吗 的文章

 

随机推荐