牛客上投递的,集团还没开系统,被部门老哥提前约面。约下午16点,老哥开会到17:30,然后电话面的[笑cry][笑cry]面试内容如下:项目里面说到Kotlin,你认为Kotlin和Java的区别是什么?Kotlin更简洁,加入了可空类型,扩展函数,Lambda表达式等Kotlin减少空指针异常,引入了空类型;Kotlin有扩展函数有协程!说到Kotlin协程,你使用协程过程中,它的优缺点?优点:轻量级,就是一个简单化的线程方便操作,实现Callback功能,有async,await等操作符号以声明的方式处理协调顺序,避免传统的回调地狱缺点:除了和老版本的代码或者框架有兼容问题,自己没感觉有啥缺点[尴尬][尴尬]协程实现callback功能的原理:先说一下协程的好处:Android通常会将耗时操作放到子线程中,然后通过回调的方式将结果返回后切换主线程更新UI,如果现在有多个子线程并发操作,UI线程在所有子线程工作完之后,处理他们的回调。传统方法会在子线程设一个boolean值,1,0判断,但是这样去写会有回调地狱问题可以用retrofit+Rxjava解决,Rxjava中还有Zip操作符但是Kotlin协程就不用这么麻烦~原理是kotlin可以实现挂起操作,等待结果过程中,运行lamada中的代码,等调用完成了,直接再恢复执行,然后调用。Java常见集合类ArrayList,Hashmap,hashset,linkedlist等那线程安全的有哪些?ConcurrentHashMap,CopyOnWriteArrayList(读的时候不加锁,写的时候加锁),包括跳表等详细说一个实现原理:跳表Skip List通过锁和CAS实现说到CAS,详细说一下原理保证原子性,先比较内存值与预期值,一样的时候才操作锁和CAS区别锁基于互斥,CAS基于比较锁能阻塞,CAS非阻塞锁是悲观锁的机制,CAS是乐观锁的机制CAS比较发现失败了怎么办?先重试,重试达到一个阈值之后获取锁来互斥访问了解锁升级的过程吗?偏向锁,一个线程访问,其他线程竞争,升级轻量级锁多个线程竞争,没抢到锁的线程开始自旋,超过10次之后就要爆炸了![狗牛头][狗牛头]锁升级为重量级锁重量级锁的时候,线程就不会再循环干等了,会挂起等待HashMap的get方法时间复杂度平均是O(1),最坏的时候是O(n);O(n)的时候是大量的键值对都映射到同一个桶里面,形成长链表或不平衡的红黑树怎么减少这种情况?哈希函数要设计好当负载因子超过一定阈值的时候,进行扩容操作重新调整桶数量和分布怎么设计一个好的哈希函数根据键的特性做对应的哈希值;取模运算,加一点位运算,异或等操作散列变换Https的证书校验流程检验基本信息:证书所有者、有效期等信息进行一一校验校验 CA 机构解密证书:取出 颁发者 CA 的公钥,然后对服务器发来的证书里面的签名进行解密比对 hash 值:浏览器使用相同的 hash 算法计算出服务器发来的证书的 hash 值,对比校验使用OkHttp证书校验流程获取服务器的数字证书,可以通过浏览器访问该服务器并查看证书信息,或者通过 OpenSSL 工具获取证书信息。将数字证书添加到 Android 应用的资源文件中, raw 目录下的文件创建证书工厂,将证书添加到该工厂中,以便 OkHttp 进行证书校验。将证书工厂添加到 OkHttp 客户端中,并使用该客户端进行 HTTPS 请求。使用TrustManager进行证书校验,使用 hostnameVerifier 进行主机名验证说到自定义证书校验逻辑,使用的是哪种级别的校验?不了解,只是简单看过同事代码[尴尬][尴尬]    反问:了解部门;了解秋招流程。问完后要拜拜,结果手一抖我先挂的电话,不知道面试官在对面是不是已经偷偷骂我了[牛泪][牛泪]
点赞 14
评论 9
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务