Preheat the oven to 350°F (175°C) and grease the cake pans. Line the bottoms with parchment paper for easy removal.
In a bowl, whisk together flour, baking soda, and salt. Set aside.
In a large mixing bowl, beat butter, oil, and sugar until light and fluffy. Add egg yolks one at a time, beating well after each addition. Mix in vanilla extract.
Alternate adding the dry ingredients and buttermilk, beginning and ending with the dry ingredients. Stir in coconut and pecans.
In a separate bowl, beat egg whites until stiff peaks form. Gently fold the egg whites into the batter.
Divide the batter evenly between the prepared pans and bake for 25-30 minutes, or until a toothpick inserted in the center comes out clean. Let the cakes cool in the pans for 10 minutes, then transfer to wire racks to cool completely.
For the frosting, beat cream cheese and butter until smooth. Gradually add powdered sugar and vanilla, mixing until fluffy.
Assemble the cake by spreading frosting between each layer, then frosting the sides and top. Sprinkle pecans over the top for garnish.