正大天晴算法笔试

正大天晴算法笔试文章探讨了乐观锁和悲观锁的概念及实现方式 包括 Java 中的 JVM 内存模型和调优工具 如 JVisualVM

大家好,欢迎来到IT知识分享网。

简述乐观锁和悲观锁原理,和其实现方式?
乐观锁总是假设最好的情况,认为共享资源每次被访问的时候不会出现问题,线程可以不停地执行,无需加锁也无需等待,只是在提交修改的时候去验证对应的资源(也就是数据)是否被其它线程修改了(具体方法可以使用版本号机制或 CAS 算法)。
悲观锁总是假设最坏的情况,认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改),所以每次在获取资源操作的时候都会上锁,这样其他线程想拿到这个资源就会阻塞直到锁被上一个持有者释放。
Java 中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
面试必备之乐观锁与悲观锁
简述JVM原理?及其调优工具?XXmXXnXXs区别?
JVM其实就类似于一台小电脑运行在windows或者linux这些操作系统环境下即可。它直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作。详细在这里插入图片描述
Java文件经过编译后变成 .class 字节码文件
字节码文件通过类加载器被搬运到 JVM 虚拟机中
虚拟机主要的5大块:方法区,堆都为线程共享区域,有线程安全问题,栈和本地方法栈和计数器都是独享区域,不存在线程安全问题,而 JVM 的调优主要就是围绕堆,栈两大块进行








简述Get和Post区别?
1、post请求更安全;post请求不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,get请求的是静态资源,则会缓存,如果是数据,则不会缓存。2、post请求发送的数据更大,get请求有url长度限制。3、post请求能发送更多的数据类型,get请求只能发送ASCII字符。4、传参方式不同。5、get产生一个TCP数据包;post产生两个。

网关实现原理?鉴权实现原理?
微服务背景下,一个系统被拆分为多个服务,但是像安全认证,流量控制,日志,监控等功能是每个服务都需要的,没有网关的话,我们就需要在每个服务中单独实现,这使得我们做了很多重复的事情并且没有一个全局的视图来统一管理这些功能。
逻辑是根据配置的路由对请求进行预处理和转发。收到请求后根据路由的匹配条件找到第一个满足条件的路由,然后请求在被该路由配置的过滤器处理后由 Netty Client 转到目标服务。服务返回响应后会再次被过滤器处理,最后返回给 Client。

项目中担任的角色?负责什么?

public calss JavaDemo{ 
    public static void main(String [] args){ 
    for(int i=1;i<=9;i++){ 
    for(int j=1;j<=i;j++){ 
    System.out.print(i+"*"+j+"="+i*j+" "); } System.out.println(); } } } 

2.打印水仙花

public class JavaDemo2{ 
    public static void main(String[] args) { 
    int count = 0; for (int i=100; i<1000; ++i) { 
    int a = i%10; int b = (i/10)%10; int c = i/100; if ((a*a*a + b*b*b + c*c*c) == i) { 
    count++; System.out.println("第" + count + "个水仙花数为:" + i); } } System.out.println("水仙花数的个数为:" + count); } } 

3.不用stream写出所有单位的关系信息(用递归)

@Data public class Department{ 
    private String id; private String parentId; private String depName; public boolean equals(Object obj){ 
    if(this.id.equals(((Department)obj).getId())) return true; else return false; } } public void test(){ 
    List<Department> deps = new ArrayList<Department>(); Department d3 = new Department(); d3.setId("003"); d3.setParentId("002"); d3.setDepName("产品部"); deps.add(d3); Department d1 = new Department(); d1.setId("001"); d1.setParentId(null); d1.setDepName("技术部"); deps.add(d1); Department d2 = new Department(); d2.setId("002"); d2.setParentId("001"); d2.setDepName("研发部"); deps.add(d2); List<Department> ds = this.getDeps(d1,deps); ds.add(0, d1); for(Department dep : ds) System.out.println(dep.getDepName()); } public List<Department> getDeps(Department department,List<Department> allDeps){ 
    List<Department> child= new ArrayList<Department>(); List<Department> result = new ArrayList<Department>(); for(Department dep : allDeps) if(dep.getParentId() != null && dep.getParentId().equals(department.getId())) child.add(dep); result.addAll(child); for(Department dep : child) result.addAll(getDeps(dep,allDeps)); return result; } 

4.图形界面开发

public class F extends JFrame implements ActionListener{ 
    } 

图形用户界面开发

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/101395.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信